본문 바로가기
Algorithm

[Java&알고리즘] 나머지가 1이 되는 수 찾기 (Level 1)

by GoodDayDeveloper 2023. 3. 2.
반응형

 

프로그래머스의 알고리즘 문제 및 풀이에 대해 차근차근 포스팅하려합니다.

 

저도 초보자이기도하고 알고리즘에 쉽게 다가갈 수 없는 부분들이 많기 때문에

최대한 알기 쉽게 정리해보려하고 알고리즘을 어려워하는 분들에게 도움이 되었으면 합니다.

 

많이 공유되고 토론이 될 수 있는 공간이 되었으면 좋겠습니다.

 

 

 

 

 

 

 

환경

언어 : 자바

단계 : 레벨 1단계 (입문자용)

정답률 : 86%

 

 

 

 

 

 

제목 

 

나머지가 1이 되는 수 찾기

 

 

 
 

 

 

문제 설명 및 코드

 

 

자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.

 

 

  • 3 ≤ n ≤ 1,000,000

 

 

1
2
3
4
5
6
7
class Solution {
    public int solution(int n) {
        int answer = 0;
        
        return answer;
    }
}
cs

 

 

 

 

 

입출력 예

 

n return
10 3
12 11

 

 

입출력 예 설명

 

입출력 예 #1

  • 10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다.

입출력 예 #2

  • 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다.

 

 

 

 

 

 

반응형

 

 

 

 

 

 

 

문제 정답 코드

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i=2; i<n; i++){
            if(n%i==1){
                answer = i;
                break;
            }
        } 
        return answer;
    }
}
cs

 

 

가장 단순하게 문제를 풀어봤습니다..

 

반복문에 조건의 범위가 n이 3보다 크고 1,000,000 이하인 수이므로

2부터 n까지 반복을 시켜줍니다.

 

임의의수인 n이 반복문의 변수인 i에 나머지수가 1이면

answer에 i값을 대입해주고 break를 넣어 반복문을 빠져나오게 하였습니다.

 

 

 

 

 

 

다른사람 풀이

 

 

1
2
3
4
5
6
7
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);
    }
}
cs

 

 

stream을 이용한 문제 풀이입니다.

range를 통해 범위를 설정하고

filter를 통해서 나머지 값 1를 찾아 첫번째값을 출력을 해줍니다.

 

API 함수식이 많이 나오지만 적은 코드에는 성능이 좋지 않기 때문에 참조하여 사용해야 될 것 같습니다..

 

 

 

 

 

 

반응형

댓글