일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 프로젝트캠프
- CS
- 스나이퍼팩토리
- React.js
- 메모리
- 네트워크
- IT개발캠프
- 개발자부트캠프
- typescript
- 스레드
- BFS
- 타입스크립트
- cs #네트워크
- 알고리즘
- react
- #프로젝트캠프 #프로젝트캠프후기 #유데미 #스나이퍼팩토리 #웅진씽크빅 #인사이드아웃 #IT개발캠프 #개발자부트캠프 #리액트 #react #부트캠프 #리액트캠프
- 해시
- 프로세스
- 프로그래머스
- javascript
- 리액트
- 유데미
- 웅진씽크빅
- 자바스크립트
- 인사이드아웃
- App Runner
- react-query
- html
- Algorithm
- ip
- Today
- Total
Bin's Blog
[프로그래머스] Level2 - 124 나라의 숫자(Javascript) 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
▶ 문제 요약
1. 124 나라에서는 10진법이 아닌 자신들만의 규칙으로 수를 표현한다.
2. 124 나라에서는 자연수만 존재
3. 124 나라에는 모든 수를 표현할 때, 1, 2, 4만 사용한다.
4. 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 리턴해라
▶ 정답 코드
function solution(n) {
let answer = "";
// 124 나라의 숫자를 인덱스에 매칭
let number = [4, 1, 2];
// n이 1일때까지 돈다
while (n) {
// 나머지 구하기
let remainder = n % 3;
// 몫 구하기
n = Math.floor(n / 3);
// 만약 나머지가 0으로 떨어지면 몫을 -1을 빼준다.
if (remainder === 0) n-=1;
// 나머지 인덱스 활용해 number 배열에서 값을 가져온다.
answer = number[remainder] + answer;
}
return answer;
}
▶ 풀이 과정
1. 124의 나라의 숫자를 [4, 1, 2] 이렇게 배열로 담았는데 왜 4를 앞에 담았나? 그 이유는 124나라는 0을 허용하지 않기 때문에 0의 자리에 4를 대신했다.
2. n이 1일때까지 while문을 돌면서
3. 나머지를 구하고, Math.floor() 숫자 내림 메서드를 활용해서 몫을 구한다.
4. 이 문제의 핵심 나머지가 0으로 떨어지면 몫을 -1을 빼준다.
예를 들어, 이 과정이 생략되면 n = 3일때를 보자. 3의 나머지와 몫은 각각 0과 1이다.
그러면 answer에 number[0] = 4가 된다.
그리고 몫이 1이므로 다음 루프가 진행된다. 나머지 1 몫은 0이다. 그러면 answer에 number[1]을 더해서 14가 된다.
근데 4번 과정이 들어가게 되면 첫 번째 루프에서 n = 0이 되면서 정답인 4만 출력된다.
5. 정답 출력
▶ 배운점
1. 규칙 찾는 거에 매우 약한 모습을 보인다. 특히 이번 문제는 패턴만 찾으면 어려운 문제가 아님에도 불구하고 너무 스스로 복잡하게 생각하는 경향이 있다.
2. 규칙 찾는 문제를 많이 풀어봐야겠다.
'Algorithm' 카테고리의 다른 글
[프로그래머스] Level2 - 연속된 부분 수열의 합(Javascript) (0) | 2023.05.10 |
---|---|
[프로그래머스] Level2 - 택배상자(Javascript) (0) | 2023.05.05 |
[프로그래머스] Level2 - 삼각 달팽이(Javascript) (0) | 2023.05.04 |
[프로그래머스] Level2 - 롤케이크 자르기(Javascript) (0) | 2023.05.02 |
[프로그래머스] Level2 - 다리를 지나는 트럭(Javascript) (0) | 2023.04.29 |