본문 바로가기
코딩 테스트

[ 프로그래머스 ] JS - 나머지가 1이 되는 수 찾기

by 주연배 2024. 7. 20.

문제

 

풀이

for 문을 이용해 n을 x로 나눈 나머지가 1이면 바로 x를 return 해 준다.

 

주의할 점

 

function solution(n) {
    let answer = 0
    for(x = 1; x<n; x++){
        if(n%x === 1) 
            answer = x;		//바로 return 해야지 가장 작은 수가 출력된다.
    }
    return answer
}


처음에  x로 나눴을때 1인 x를 answer에다가 저장한 후 return을 했더니 나머지가 1이 되도록 하는 가장 작은 자연수 x가 아니라 가장 큰 자연수 x가 계속해서 나오는 것이었다.

알고보니 answer에다가 저장한 후 return을 하면 반복문이 다 돌고난 후에 마지막 값을 return하므로 계속해서 큰 자연수가 나오는 것을 알 수 있었다.

따라서 작은 자연수가 나오게 하려면 if문에서 조건에 맞는 x가 나오면 바로 return을 해야 가장 작은 수를 반환할 수 있다는 사실을 깨달았다!

 

 

결과

function solution(n) {
    for(x = 1; x<n; x++){
        if(n%x === 1) 
           return x;
    }
}

 

후에 파이썬으로도 풀어 보았다!

def solution(n):
    return [i for i in range(2,n) if n%i == 1][0]