본문 바로가기

알고리즘 & 코딩테스트/코딩테스트

Programmers Lv.1 "나머지가 1이 되는 수 찾기"

Programmers Lv.1 나머지가 1이 되는수 찾기, 월간 코드 챌린지 시즌3, 정답률 87%

프로그래머스 Lv.1 "나머지가 1이 되는 수 찾기"이다.
문제를 쭉 읽어보면 핵심이 되는 부분이 즉각적으로 보인다.
n이 주어졌을 때 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 구하면 된단다.

즉, 가장 작은 자연수부터 n을 계속 나누다 나머지가 1이 되는 시점에서 멈추면 된다.
그런데 x를 반복수 삼아 반복을 하려면 언제까지 반복을 해야하는지 알아야 하지 않은가?
이 경우 조금만 더 생각해보면 알 수 있다. 
자연수 사이의 나눗셈은 피제수의 크기가 제수를 넘어갈 수 없다.
즉, x의 범위는 자연스레 n까지 되는것이다.

def solution(n):
    answer = 0
    for i in range(1, n):
        if n%i==1:
            answer = i
            break
    
    return answer

요 문제에서 주의했으면 하는부분은 문제를 분석하는 설명의 마지막 부분이다.
자연수 사이의 나눗셈은 피제수의 크기가 제수를 넘어갈 수 없다는 것.
즉, 10 / 5 에서 10이 피제수, 5가 제수이므로 제수부분이 미지수로 치환될 때 범위는 피제수가 넘어갈 수 없다는 것이다.