Coding Test/Java Coding Test
[프로그래머스 / 자바] - 저주의 숫자 3
nam_ji
2024. 9. 13. 19:10
저주의 숫자 3 - LV.0
문제
- 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 마을에서 사용하는 숫자로 바꿔 출력하는 문제입니다.
테스트 (인텔리제이)
- 제 풀이와 다른 사람 풀이 중에서 더 좋은 코드가 있어 가져와 봤습니다.
1번 풀이
- n 번째 나올 수가 궁금하기 때문에 for문을 이용했습니다.
- n번쨰가 될 때까지 수는 무조건 1씩 증가하기 때문에 for문이 시작하면 answer는 1씩 증가합니다.
- 하지만 3의 배수 또는 3이 포함된 숫자는 뺴고 진행되어야 하기 때문에 while문을 이용하여 answer가 3의 배수이거나 3을 포함하고 있다면 해당되지 않을 때까지 1씩 증가할 수 있게 while문을 사용하여 해결했습니다.
2번 풀이
- 두 번째 풀이도 첫 번째와 비슷하지만 다른 점은 while문을 사용하지 않고 if문을 사용하여 if문에 해당하게 되면 for문의 순번을 가리키는 i의 값을 1 감소하게 하여 푼 풀이입니다.
3번 풀이
- 세 번쨰 풀이는 두 번쨰와 다 똑같지만 한가지 다른 점은 if문에 해당하면 n을 1 증가하는 풀이입니다.
4번 풀이
- 네 번째 풀이는 n의 제한 조건이 100이기 때문에 1부터 100까지 나올 수 있는 값을 배열로 정리하여 n - 1에 해당하는 원소 값을 반환하는 풀이입니다.
package com.namji.codingtest;
public class 저주의_숫자_3 {
public static void main(String[] args) {
/*
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 마을에서 사용하는 숫자로 바꿔 출력하는 문제입니다.
제한사항
1 ≤ n ≤ 100
입출력 예
n result
15 25
40 76
입출력 설명
#1
15를 3x 마을의 숫자로 변환하면 25입니다.
#2
40을 3x 마을의 숫자로 변환하면 76입니다.
*/
/*
n result
15 25
40 76
*/
int n = 40;
int answer = 0;
for (int i = 1; i <= n; i++) {
answer++;
while (answer % 3 == 0 || (answer + "").contains("3")) {
answer++;
}
}
System.out.println(answer);
// int n = 40;
// int answer = 0;
//
// for (int i = 1; i <= n; i++) {
// answer++;
// if (answer % 3 == 0 || String.valueOf(answer).contains("3")) {
// i--;
// }
// }
// System.out.println(answer);
// int n = 40;
// int answer = 0;
//
// for (int i = 1; i <= n; i++) {
// answer++;
// if (answer % 3 == 0 || (answer + "").contains(3 + "")) {
// n++;
// }
// }
// System.out.println(answer);
// int n = 40;
// int[] answer = { 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 };
//
//
// System.out.println(answer[n - 1]);
}
}
프로그래머스 코드
class Solution {
public int solution(int n) {
int answer = 0;
for (int i = 1; i <= n; i++) {
answer++;
while (answer % 3 == 0 || (answer + "").contains("3")) {
answer++;
}
}
return answer;
}
}
// 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;
// }
// }
// class Solution {
// public int solution(int n) {
// int answer = 0;
// for (int i = 1; i <= n; i++) {
// answer++;
// if (answer % 3 == 0 || (answer + "").contains(3 + "")) {
// n++;
// }
// }
// return answer;
// }
// }
// class Solution {
// public int solution(int n) {
// int[] answer = { 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 answer[n - 1];
// }
// }