Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Deep Dive
- 자료구조
- JWT
- TIL
- OOP
- css
- 코딩테스트
- 알고리즘
- Linux
- nestjs
- node.js
- javascript
- LifeCycle
- puppeteer
- 탐욕법
- 인접행렬
- Interceptor
- html
- Kubernetes
- dfs
- bean
- REST API
- winston
- MySQL
- GraphQL
- 인접리스트
- 프로그래머스
- java
- typescript
- Spring
Archives
- Today
- Total
처음부터 차근차근
[프로그래머스] Lv0 저주의 숫자3 본문
728x90
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/120871
문제 설명
내 풀이
function solution(n) {
// 1. answer = 1로 설정
let answer = 1
// 2. 정수 n만큼 반복문 실행
for (i = 1;i < n; i++){
// 2-1 반복문을 돌리때마다 숫자 1을 추가
answer++
// 2-2 math 함수 실행
answer = math3(answer)
}
return answer
}
function math3(answer) {
// 3으로 나뉘어지거나, 3이 포함되어 있는 경우
if (answer % 3 == 0 || String(answer).includes('3')){
// 숫자를 증가시키고
answer ++
// 다시 한번 재귀함수 DP 실행
return math3(answer)
} else {
// 그렇지 않다면 return
return answer
}
}
다른 사람의 풀이
function solution(n) {
return [...Array(n * 3)]
.map((_, i) => i + 1)
.filter((num) => num % 3 !== 0 && !num.toString().includes("3"))[n - 1];
}
먼저 3n 만큼의 배열을 먼저 생성
map을 통해 배열 안 인자를 정렬하고,
filter를 통해 저주의 숫자 3을 제거한 뒤, n에 해당하는 숫자를 출력
오늘 배운 점
- DP를 사용하는 알고리즘이지만, 다른 방법도 있다는 것을 알았다.
- 하지만 method를 많이 사용하는 방법이므로, 효율성 테스트에서 통과하지 못할 것 같다.
'코딩테스트 > Javascript' 카테고리의 다른 글
[프로그래머스] Lv2 의상 (1) | 2023.11.01 |
---|---|
[프로그래머스] Lv2 이진 변환 반복하기 (1) | 2023.11.01 |
[프로그래머스] Lv0 숨어있는 숫자의 덧셈(2) (1) | 2023.11.01 |
[프로그래머스] Lv1 비밀지도 (0) | 2023.10.31 |
[프로그래머스] Lv2 최솟값 만들기 (0) | 2023.10.31 |