문제설명
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 함수를 완성해주세요.
제한사항
입출력 예
n | result |
---|---|
15 | 25 |
40 | 76 |
입출력 예 설명
입출력 예 #1
입출력 예 #2
풀이
Myfunction에 들어가는 숫자에 3을 포함되거나,
3의 배수가 아닐 때까지 재귀 함수로
반복 시켰다.
class Solution {
public int Myfunction(int n) {
n++;
return (n%3==0 || (n+"").contains("3")) ? Myfunction(n) : n ;
}
public int solution(int n) {
int threeTimes = 0;
for (int i = 1; i <= n; i++) {
threeTimes = Myfunction(threeTimes);
}
return threeTimes;
}
}
깔끔해 보이는 다른 풀이 코드도 하나 첨부한다.
원리는 재귀 함수와 비슷하다.
기본적으로 answer값을 1증가시킨 뒤,
answer가 3을 포함되거나, 3의 배수일 때 인덱스를 감소시켜 반복문을
한번 더 순환하게 한다.
class Solution {
public int solution(int n) {
int answer = 0;
for (int i = 1; i <= n; i++) {
answer++;
if (answer % 3 == 0 || String.valueOf(answer).contains("3")) {
i--;
}
}
return answer;
}
}
참고