❗ 문제
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/courses/30/lessons/87389
자연수 n이 매개변수로 주어집니다.
n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해 주세요.
답이 항상 존재함은 증명될 수 있습니다.
❓ 나의 풀이
function solution(n) {
for (let i = 1; i < n; i++) {
if (n % i === 1) {
return i;
}
}
}
for 문과 if 문을 이용해서 풀었다.
우선, 테스트 케이스를 보자.
10을 x로 나누었을 때, 나머지가 1이 되도록 하려면, x는 0보다 크고 10보다 작아야 한다.
그래서 for 문을 이용해 i 의 값을 1부터 n 보다 작게 설정했다.
그다음 조건문을 사용해 n 을 i 로 나누었을 때, 나머지가 1이면 i 값을 반환하고 반복문을 종료하도록 했다.
++) 다른 사람 풀이(while 문)
function solution(n, x = 1) {
while (x++) {
if (n % x === 1) {
return x;
}
}
}
내가 푼 방식과 어느 정도 유사하지만, while 문을 사용해서 풀어 볼 생각은 못했다.
x = 1 로 디폴트값을 설정하고, → 어차피 x 의 값은 무조건 0보다 커야 하니까 기본값으로 1을 사용
while 문을 통해 x 를 계속 증가시킨디.
x 의 값이 증가하면서 n % x === 1 조건을 만족하는 x 를 찾으면, 그 x 값을 반환하고 함수가 종료된다.
문제에서 답이 항상 존재한다고 명시되어 있기 때문에 x++ 이라고 조건을 부여해도 무한 루프에 빠질 걱정은 없고,
만약 답이 항상 존재하지 않는다면 x < n 이라고 조건을 부여해서 무한 루프에 빠지지 않도록 해야 한다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 핸드폰 번호 가리기 (Level 1, JavaScript) (2) | 2024.10.04 |
---|---|
[프로그래머스] 음양 더하기 (Level 1, JavaScript) (0) | 2024.09.19 |
[프로그래머스] 정수 제곱근 판별 (Level 1, JavaScript) (0) | 2024.09.10 |
[프로그래머스] 문자열 내 p와 y의 개수 (Level 1, JavaScript) (0) | 2024.09.09 |
[프로그래머스] 하샤드 수 (Level 1, JavaScript) (0) | 2024.09.04 |