코딩테스트
[프로그래머스] 저주의 숫자 3
lemonarr🍋
2025. 3. 11. 18:43
문제 설명
나의 문제 풀이
class Solution {
public int solution(int n) {
//3이 들어있는 모든 수 10의자리 3, 일의자리3
//3의 배수
int answer = 0;
for(int i =1; i<=n; i++){ //15
System.out.println("현재 i값은 ? : " + i);
// if(answer%3 == 0 || answer%10 == 3){
// answer+=1;
// } //결과 값: 23, 60
if(answer%3 == 0){
answer+=1;
System.out.println("3의 배수는? : " + answer);
}
if(answer%10 == 3){
answer+=1;
System.out.println("일의자리 3? : " + answer);
}
answer+=1;
System.out.println("기본 +1 값은? : " + answer);
}
return answer;
}
}
문제 파악하기
3의 배수, 3이 들어가는 숫자에 ++ 연산을 적용시키면 된다.
하지만 3이 들어가는 숫자 부분에서 문제 풀이가 적절치 못한 것 같다.
테스트 1만 통과하고 대체 왜 2는 통과 못하는 건지..혼자 끙끙 대다가
다른 분의 문제풀이를 보니
다른 사람의 문제풀이
class Solution {
public int solution(int n) {
int answer = 0;
for (int i = 0; i < n; i++) {
answer++;
while (answer % 3 == 0 || String.valueOf(answer).contains("3")) {
answer++;
}
}
return answer;
}
}
코드가 깔끔하다.
String.valueOf(answer).contains("3") 을 사용해서 깔끔하게 구현하셨다.
int라서 모든 코드를 숫자만 사용해서 풀려고 했었는데
생각해보니 배열로 값을 도출하는 문제가 아니고 answer만 int 값이면 되는 것이란 걸 깨달았다. ㅎㅎ
자꾸 문제풀이를 완벽하게 하려고 하니까 문제에 접근하는 수준 높이는 속도가 더딘 것 같다.
input을 일단 많이 해봐야겠다는 생각이 든다.
도출되는 값을 확인해볼것!!