-
프로그래머스 - 나머지가 1이 되는 수 찾기알고리즘 2022. 7. 4.반응형
내 풀이
public class P_35 { public int solution(int n) { // 나머지가 1이 되는 수 찾기 int answer = 0; for(int i=2; i<n; i++) { if(n % i == 1) { answer = i; break; } } return answer; } public static void main(String[] args) { P_35 p = new P_35(); int n = 10; System.out.println(p.solution(n)); } }
자기 자신과 나누게 되면 나머지는 0
자기 자신보다 큰 수와 나누게 되면 나머지는 1이 절대로 나올 수 없다.
0으로 나누어도 나머지는 1이 나올 수 없다.
1로 나누면 나머지는 무조건 0이 나온다.
그러니까 반복문의 최대 횟수는 n인 자기 자신이며 i가 0으로 시작할 필요도 없으며 1로 시작할 필요도 없다.
반복문 안에서는 단순하게 조건을 만족 했을 경우 break로 나오면 된다.
다른 사람 풀이
import java.util.stream.IntStream; class Solution { public int solution(int n) { return IntStream.range(2, n).filter(i -> n % i == 1).findFirst().orElse(0); } }
Stream을 활용한 풀이 방법.
IntStream을 활용해서 for문 while문 처럼 반복문을 돌릴 수 있다. (Java 8 이상)
range()로 반복문의 범위를 정하고,
filter()로 조건을 걸고,
findFisrt()를 사용해서 첫번째 요소를 반환
orElse() : 값이 null로 반환 될 시 0으로 반환 시키겠다는 뜻.
- 참고 -
stream은 함수비용이 적은 코드에서는 성능이 좋지 않기 때문에, 단순한 반복에선 사용하는 것은 좋지 않다.
반응형'알고리즘' 카테고리의 다른 글
프로그래머스 - 두 개 뽑아서 더하기 (0) 2022.07.11 프로그래머스 - 비밀 지도 [2018 KAKAO BLIND RECRUITMENT] (0) 2022.07.06 프로그래머스 - 2016년 (0) 2022.07.01 프로그래머스 - 최소직사각형 (0) 2022.06.30 프로그래머스 - 부족한 금액 계산하기 (0) 2022.06.29