문제 설명
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입니다.
풀이1
class Solution {
public int solution(int n) {
int num = 0; // 3x 마을에서 쓰는 숫자
while (n > 0) {
num++; // 3x 마을에서 쓰는 숫자 증가
if (num % 3 == 0 || String.valueOf(num).contains("3")) {
continue; // 3의 배수거나 3을 포함하면 건너뛴다.
}
n--; // 10진수 n 감소
}
return num;
}
}
풀이2
// for문 사용 풀이
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--; // i--를 해준 이유는 answer++을 한 번 더 수행하기 위해서
}
}
return answer;
}
}
풀이3
// 하드코딩으로 매핑 풀이
class Solution {
public int solution(int n) {
int[] list = { 1, 2, 4, 5, 7, 8, 10, 11, 14, 16, 17, 19, 20, 22, 25, 26, 28, 29, 40, 41, 44, 46, 47, 49, 50, 52,
55, 56, 58, 59, 61, 62, 64, 65, 67, 68, 70, 71, 74, 76, 77, 79, 80, 82, 85, 86, 88, 89, 91, 92, 94, 95,
97, 98, 100, 101, 104, 106, 107, 109, 110, 112, 115, 116, 118, 119, 121, 122, 124, 125, 127, 128, 140,
142, 145, 146, 148, 149, 151, 152, 154, 155, 157, 158, 160, 161, 164, 166, 167, 169, 170, 172, 175, 176,
178, 179, 181, 182, 184, 185 };
return list[n - 1];
}
}
'👨💻 Coding Test > Programers' 카테고리의 다른 글
[Programmers/Java/Lv.0/수학 유형] 63.겹치는 선분의 길이 (0) | 2025.03.23 |
---|---|
[Programmers/Java/Lv.0/수학 유형] 62.평행 (0) | 2025.03.23 |
[Programmers/Java/Lv.0/문자열 유형] 60.외계어 사전 (0) | 2025.03.14 |
[Programmers/Java/Lv.0/수학 유형] 59.삼각형의 완성조건 (2) (0) | 2025.03.14 |
[Programmers/Java/Lv.0/시뮬레이션 유형] 58.안전지대 (0) | 2025.03.13 |