PS/Programmers

[Programmers Level1] 나머지가 1이 되는 수 찾기(C++)

박땅콩 2022. 7. 10.
728x90

※주의※

저의 풀이가 정답은 아닙니다.

다른 코드가 더 효율적이거나 좋을 수 있습니다.

언제나 다른 사람의 코드는 참고만 하시기 바랍니다.

 

[문제 풀이 사이트]

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

[문제 설명]

 

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

 

[제한 사항]

 

3 ≤ n ≤ 1,000,000

 

[입출력 예]

 

n result
10 3
12 11

 

[입출력 예 설명]

 

입출력 예 #1

 

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

 

입출력 예 #2

 

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

 

[문제 풀이]

 

n을 x로 나누었을 때 나머지가 1이되는 가장 작은 자연수를 리턴해야한다.

 

  1. n을 우선 시작 값을 2로하여 나누어준다.
  2. 나머지가 1이 아니라면 값을 1을 증가 시켜서 해당 값으로 나눈다.
  3. 나머지가 1이라면 반복문을 빠져나와서 나눈 값을 리턴한다.

 

[최종 코드]

 

[GitHub]

 

 

GitHub - SmallPeanutPark/Programmers: Study Programmers for Coding Test

Study Programmers for Coding Test. Contribute to SmallPeanutPark/Programmers development by creating an account on GitHub.

github.com

 

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 1;

    while (true) {
        if (n % answer == 1) {
            break;
        }
        ++answer;
    }
    return answer;
}
728x90

댓글