프로그래머스 - 코딩테스트
[Java][프로그래머스] - LVL.0 순서쌍의 개수
Denny Code
2023. 1. 26. 22:35


정답 1
오,,, 이번 문제는 생각보다 단순하면서도 머리를 많이 굴렸던것 같다. 일딴 저렇게 두수의 쌍을 지어준다는 것 자체가 처음에는 이해가 안갔다. 하지만 역시 못해도 Go 라고! 풀다 보니 겉으론 복잡해보이지만 돌파구가 너무나도 확실한 문제였다.
일딴 입출력 예 설명을 보면 간단한 규칙이자 트릭이 눈에 띈다.
바로 주어진 숫자 n 에 순서쌍의 첫번째 숫자를 나누면 나머지가 0이라는 것이다.
규칙을 풀어 설명하면 20/1 = 몫 : 20 , 나머지 : 0 \\ 20/2 = 몫 : 10, 나머지 0
이란 규칙이 눈에 띄었다.
즉, 20%순서쌍의 첫번째 숫자 == 0 이라는 것이다.
해서 아래와 같은 답이 도출 되었다.
import java.util.stream.IntStream;
class Solution {
public int solution(int n) {
return IntStream.rangeClosed(1, n).filter(d -> n % d == 0).toArray().length;
}
}
IntStream에 rangeClosed 를 사용해 마지막 숫자까지 반복문이 돌도록 했으며 filter 사용해 주어진 숫자와의 나눗셈에서 나머지가 0인 수들만 걸러서 int[] 배열로 만들고 그 배열의 길이를 구했다.
결과는 정답이었다.
정답 2
import java.util.stream.IntStream;
class Solution {
public int solution(int n) {
return (int) IntStream.rangeClosed(1, n).filter(i -> n % i == 0).count();
}
}
다른 정답을 확인해보니 나와 비슷했다.
여기서는 count() 를 사용해 filter 된 stream 의 총 갯수를 Long 으로 반환받아 int 로 형변환하여 return 하였다.
내 닶과 비슷해 기분이 좋다.