안녕하세요. 민쯔입니다.😊
이번에는 "나머지가 1이 되는 수 찾기" 문제를 풀어보았는데요.
이번 문제는 해결방안을 설명하기도 부끄러울 정도로 쉬운 문제라...ㅋㅋ 해결방안 쓰기도 머쓱하네요.
그럼 "나머지가 1이 되는 수 찾기"해결방안에 대해 설명해보겠습니다.
function solution(n) {
for(let i=0; i<n; i++){
if(n % i === 1) return i;
}
}
문제 설명
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
여기서 노랑색으로 밑줄 친 부분이 중요해요.
- "n을 x로 나눈 나머지가 1" -> "n % x === 1"
- "가장 작은 자연수 x를 return" -> "나머지가 1이 되는 자연수를 다 구할 필요가 없다."
이제 여기서 나온 두 문장을 활용하여 코드를 작성해보겠습니다.
이번에도 역시 for문을 사용해서 풀었는데
나머지 값이 1이 나오려면 자연수 n 보다 큰 수를 나눌 필요가 없고,
n보다 작은 수로 나누어야 나머지 값이 1이상의 숫자가 나오겠죠?
그래서 for문을 작성할 때 "i < n"으로 했습니다.
- for(let i=0; i<n; i++)
여기서 "i=0"으로 쓰는게 중요한데 이렇게 안 쓰면 통과 못해요!!!!!
제가 제한사항에서 "3 ≤ n ≤ 1,000,000"이라서 i=3으로 했다가 제출 후 채점하기에서 테스트 4, 5번이 실패 떠서 통과 못했었거든요.😂
이제 가장 작은 자연수를 구해야되는데
이거는 단순하게 if문을 쓰면 됩니다.
조건문은 "n % i === 1"을 넣으면 되고요.
- if(n % i === 1)
여기서 중요한 건 "return"을 써주는 겁니다.
앞서 "가장 작은 자연수 x를 return" -> "나머지가 1이 되는 자연수를 다 구할 필요가 없다." 이 말을 했잖아요?
그럼 작은 수부터 차례대로 "if(n % i === 1)"를 해주고,
조건에 맞으면 바로 끝내면 되는 거잖아요? 그렇죠?
이미 앞에서 for문을 활용해서 작은 수부터 차례대로 나머지 넣는 값에 넣어 주고 있고,
조건에 맞으면 바로 끝내기 위해 "return"을 사용했습니다.
- if(n % i === 1) return i;
'코딩 > 프로그래머스 코딩테스트' 카테고리의 다른 글
[프로그래머스] 가운데 글자 가져오기 (0) | 2021.12.09 |
---|---|
[프로그래머스] 비밀지도 (0) | 2021.12.08 |
[프로그래머스] 부족한 금액 계산하기 (0) | 2021.11.11 |
[프로그래머스] 최소직사각형 (0) | 2021.11.09 |
[프로그래머스] 2016년 (0) | 2021.11.05 |