STUDY/Code TEST
프로그래머스 저주의 숫자 3
doosik
2023. 6. 16. 15:46
[level 0] 저주의 숫자 3 - 120871
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
성능 요약
메모리: 33.5 MB, 시간: 0.22 ms
구분
코딩테스트 연습 > 코딩테스트 입문
채점결과
Empty
문제 설명
3x 마을 사람들은 3을 저주의 숫자라고 생각하기 때문에 3의 배수와 숫자 3을 사용하지 않습니다. 3x 마을 사람들의 숫자는 다음과 같습니다.
10진법 | 3x 마을에서 쓰는 숫자 | 10진법 | 3x 마을에서 쓰는 숫자 |
---|---|---|---|
1 | 1 | 6 | 8 |
2 | 2 | 7 | 10 |
3 | 4 | 8 | 11 |
4 | 5 | 9 | 14 |
5 | 7 | 10 | 16 |
정수 n
이 매개변수로 주어질 때, n
을 3x 마을에서 사용하는 숫자로 바꿔 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
n
≤ 100
입출력 예
n | result |
---|---|
15 | 25 |
40 | 76 |
입출력 예 설명
입출력 예 #1
- 15를 3x 마을의 숫자로 변환하면 25입니다.
입출력 예 #2
- 40을 3x 마을의 숫자로 변환하면 76입니다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr
코드
function solution(n) {
let answer = 0
for(let i=1; i<=n; i++){
answer += 1
while(answer%3 === 0 || String(answer).split("").indexOf("3") >= 0){
answer += 1
}
}
return answer
}
코드 설명
조건은 3의 배수를 쓰지 않고 숫자 3을 사용하지 않는 것이다.
핵심 포인트는 일반적인 숫자처럼 다음 순서로 갈 때 1씩 더해지지만,
그 값이 위에서 말하는 조건에 부합하는지 아닌지만 파악하면 되는 것이다.
예를들어 n이 10 이라면
정상적인 숫자 나열 -
3x마을 숫자 나열 -
위의 표처럼 3의 배수를 쓰지 않고 숫자 3을 사용하지 않을 때까지 값을 도출해내면 된다.
1 2 3 4 5 6 7 8 9 10 1 2 3, 45 6, 78 9, 1011 12,13, 1415, 16
그래서 나는 while문을 써서 값이 나올때까지 answer에 값을 더 하는 방식으로 썼다.
그리고 숫자 3을 쓰는 것을 파악하는 조건식에는
먼저 Number형태를 String으로 변경 후 split메소드로 배열로 만들고 indexOf로 "3"을 가지고 있는지 없는지 확인했다.(indexOf 메소드는 찾는 값의 인덱스 값을 알려주며, 같은 값이 없다면 -1을 return 한다)