일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- HTML
- 자바스크립트 날씨
- 간단한 날씨 웹 만들기
- 코드스테이츠
- 코딩부트캠프
- 엘리스
- 자바스크립트 reduce()
- [파이썬 실습] 중급 문제
- reactnativecli
- 날씨 웹 만들기
- 자바스크립트 sort()
- 엘리스 ai 트랙
- 자바스크립트
- leetcode
- 부트캠프
- [파이썬 실습] 기초 문제
- 프론트개발
- [AI 5기] 연습 문제집
- 프론트개발공부
- 개발공부
- 프로그래머스
- JavaScript
- [파이썬 실습] 심화 문제
- 삼항연산자
- 자바스크립트 split()
- 리트코드
- 자바스크립트 날씨 웹 만들기
- RN 프로젝트
- 엘리스 AI 트랙 5기
- 개발일기
- Today
- Total
개발조각
[프로그래머스] 나머지가 1이 되는 수 찾기 본문
2021.11.20에 푼 문제입니다.
이번 문제는 해결방안을 설명하기도 부끄러울 정도로 쉬운 문제라 해결방안 쓰기도 머쓱하네요;;
이 문제에서는
문제 설명에서 "자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요."문장에서
- n을 x로 나눈 나머지가 1 이 되도록
- 가장 작은 자연수 x를 return
이 두 문장이 중요합니다.
이 두 문장을 설명하자면
- n을 x로 나눈 나머지가 1 이 되도록 : n % x === 1
- 가장 작은 자연수 x를 return : 나머지가 1이 되는 자연수를 다 구할 필요 없고 가장 작은 자연수만 찾으면 된다.
이렇게 됩니다.
이 두 문장을 활용해서 코드로 작성해 보겠습니다.
해결방안
function solution(n) {
for(let i=2; i<n; i++){
if(n % i === 1) return i;
}
}
for(let i=0; i<n; i++)
이번에도 역시 for문을 사용해서 풀었습니다.
여기서 for문을 쓴 이유는 1~n-1까지 차례대로 n % i === 1을 해주기 위해서입니다.
그래서 n % i === 1값이 나오는 가장 작은 수를 구할 수 있게 됩니다.
여기서 for문안에서 i=2, i<n으로 한 이유는
n에서 0, 1, n으로 나누면 무조건 0이 나오기도 하고
제한 사항에서 3 ≤ n ≤ 1,000,000도 있기 때문에
i=2, i<n으로 넣어주어 2~n-1까지 반복하게 했습니다.
if(n % i === 1) return i;
여기서 가장 중요한 것은 가장 작은 수를 return 하라고 했습니다.
그러기 위해서 return을 써주는 것이 중요한데요.
작은 수부터 차례대로 "if(n % i === 1)"를 해주고, for문을 다 실행할 필요 없이 조건에 맞으면 바로 끝내면 되는 거잖아요?
이미 for문에서 작은 수부터 차례대로 넣어주고 있기도 하고요.
그래서 조건에 맞으면 바로 끝내기 위해 "return"을 사용했습니다.
테스트 1 (n = 10)
for(let i=2; i<n; i++) -> 2, 3, 4, 5, 6, 7, 8, 9 반복
i =2일 때
if(n % i === 1) -> if(10 % 2 === 1) -> false -> i=3실행
=> 10 % 2 = 2
i =3일 때
if(n % i === 1) -> if(10 % 3 === 1) -> true
답 : 3
테스트 2 (n = 12)
for(let i=2; i<n; i++) -> 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 반복
i = 2일 때
if(n % i === 1) -> if(12 % 2 === 1) -> false -> i=3실행
=> 12 % 2 = 0
i = 3일 때
if(n % i === 1) -> if(12 % 3 === 1) -> false -> i=4실행
=> 12 % 3 = 0
i = 4일 때
if(n % i === 1) -> if(12 % 4 === 1) -> false -> i=5실행
=> 12 % 4 = 0
i = 5일 때 if(n % i === 1) -> if(12 % 5 === 1) -> false -> i=6실행
=> 12 % 5 = 2
i = 6일 때
if(n % i === 1) -> if(12 % 6 === 1) -> false -> i=7실행
=> 12 % 6 = 0
i = 7일 때
if(n % i === 1) -> if(12 % 7 === 1) -> false -> i=8실행
=> 12 % 7 = 5
i = 8일 때
if(n % i === 1) -> if(12 % 8 === 1) -> false -> i=9실행
=> 12 % 8 = 4
i = 9일 때
if(n % i === 1) -> if(12 % 9 === 1) -> false -> i=10실행
=> 12 % 9 = 3
i = 10일 때
if(n % i === 1) -> if(12 % 10 === 1) -> false -> i=11실행
=> 12 % 10 = 2
i = 11일 때
if(n % i === 1) -> if(12 % 11 === 1) -> true
답 : 11
여기까지 프로그래머스 나머지가 1이 되는 수 찾기 해결방안에 대해 설명해보았습니다.
'알고리즘🅰 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 가운데 글자 가져오기 (0) | 2022.02.16 |
---|---|
[프로그래머스] 비밀지도 (0) | 2022.02.16 |
[프로그래머스] 부족한 금액 계산하기 (0) | 2022.02.15 |
[프로그래머스] 최소직사각형 (0) | 2022.02.14 |
[프로그래머스] 2016년 (0) | 2022.02.11 |