문제
풀이
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]
'코딩 테스트' 카테고리의 다른 글
[ 프로그래머스 ] JS - 문자열 다루기 기본 (0) | 2024.12.13 |
---|---|
[ 프로그래머스 ] JS - 두 개 뽑아서 더하기 (0) | 2024.08.16 |
[ 프로그래머스 ] MYSQL - 경기도에 위치한 식품창고 목록 출력하기 (0) | 2024.07.20 |
[ 프로그래머스 ] 파이썬 - 배열 만들기 (0) | 2024.06.30 |
[ 프로그래머스 ] 문자열 뒤집기 (0) | 2024.06.02 |