두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한사항 | 입출력 예 |
|
내 생각
2중 for 문으로 left .. right까지 한 뒤 하나마다 약수의 갯수를 구해 짝수이면 더하고 홀수면 뺀다
내 풀이
class Solution { fun solution(left: Int, right: Int): Int { var answer: Int = 0 for (i in left..right) { var cnt = 0 for (j in 1..i) { if (i % j == 0) { cnt += 1 } } if (cnt % 2 == 0) answer += i else answer -= i } return answer } }
다른 사람의 풀이
class Solution { fun solution(left: Int, right: Int): Int { return (left..right).map { i -> if ((1..i).filter { i % it == 0 }.size % 2 == 0) i else -i }.sum() } }
filter와 map을 잘 사용하면 코드를 간결하게 사용할 수 있으니까 더 연습해야겠다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스_Kotlin] 문자열 다루기 기본 (0) | 2024.01.31 |
---|---|
[프로그래머스_Kotlin] 부족한 금액 계산하기 (0) | 2024.01.29 |
[프로그래머스_Kotlin] 문자열 내림차순으로 배치하기 (1) | 2024.01.29 |
[프로그래머스_Kotlin] 내적 (1) | 2024.01.29 |
[프로그래머스_Kotlin] 수박수박수박수박수박수? (1) | 2024.01.29 |