100세까지 코딩
[프로그래머스] Lv0.저주의 숫자 3 본문
문제 설명
풀기 전 생각
- 반복문을 사용하여 i = 1부터 n까지 반복하기
- i가 +1 증가할 때마다 3x 마을에서 쓰는 숫자도 +1 해주기
- 3x 마을에서 쓰는 숫자 +1 했는데도 3의 배수거나 3이 포함되면 또 +1 해주기
- 포함여부는 3x 마을에서 쓰는 숫자를 String으로 바꾸고. contains() 메서드 사용
class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 1 ; i <= n; i++){
answer++;
if(answer%3==0){
answer++;
}else if(String.valueOf(answer).contains("3")){
answer++;
}
System.out.println(answer);
}
return answer;
}
}
오류 및 개선
- 10진수 9는 3x마을에서 14가 되어야 되는데 13이 나옴
- 13을 contains에서 걸러지지가 않음
- 그 이유는 9일때 if(answer%3==0)에서 걸려 13이 되는데 else if를 써서 밑에 조건에서 안 걸림
- 또한, answer이 +1해도 계속 3의 배수이거나 3을 포함할 수 있음
최종
class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 1 ; i <= n; i++){ // 1부터 시작하여 n까지
answer++; // 3x 마을 숫자도 더해줌
if(answer%3==0 || String.valueOf(answer).contains("3")){ // 3의 배수거나 3을 포함하면
while(answer%3==0 || String.valueOf(answer).contains("3")==true){ // 3의 배수거나 3포함 안할때까지 +1
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;
}
}
모범답안을 볼 때마다 경외감이..
'코딩테스트 > 자바' 카테고리의 다른 글
[프로그래머스] Lv0.특이한 정렬 (0) | 2023.08.31 |
---|---|
[프로그래머스] Lv0.배열 만들기 2 (0) | 2023.08.29 |
[프로그래머스] Lv0.코드 처리하기 (0) | 2023.08.27 |
[프로그래머스] Lv0.배열 조각하기 (0) | 2023.08.27 |
[프로그래머스] Lv0.주사위 게임 (0) | 2023.08.26 |