오늘도 돌아온 코테 공부 시간
이번 문제는 "저주의 숫자 3"입니다.
문제 내용
3x 마을 사람들은 3을 저주의 숫자라고 생각하기 때문에 3의 배수와 숫자 3을 사용하지 않습니다.
정수 n이 매개변수로 주어질 때, n을 3x 마을에서 사용하는 숫자로 바꿔 return 하도록 solution 함수를 완성해 주세요.
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
1 ≤ n ≤ 100
입출력 예
n = 15, result = 25
n = 40, result = 76
작성 코드
class Solution {
public int solution(int n) {
int answer = 0;
for (int i=1; i<=n; i++){
answer++;
// 앞 자리가 3, 13이면 하나씩 패스해서 10개 점프
// 3의 배수이거나, 끝자리가 3이면 +1해서 패스
while ((answer/10 == 3) || (answer/10 == 13) || (answer%3 == 0) || (answer%10 == 3)) {
answer += 1;
}
}
return answer;
}
}
맨 처음에 바보 같이 if 문으로만 해결하려고 했는데
생각해 보니 조건에 따라서는 숫자 패스를 많이 해야 하는 경우도 있고 해서
while에서 조건에 해당하는 동안은 계속 넘기는 방식으로 해결을 했다.
하지만 내 방식의 단점은 제약조건 n이 커지면 오류가 난다는 것
다른 분들 풀이를 보니 3의 배수인 경우는 나와 동일하게 %(나머지) 연산자로 작업했다.
하지만 숫자 3이 들어가는 경우는 아래와 같이 문자열로 바꾼 후에 "3"이 있는지 판별하는 방식을 쓰더라.
String.valueOf(answer).contains("3")
오늘도 하나 배웠다...!
(문제 출처 : 프로그래머스 https://school.programmers.co.kr/learn/courses/30/lessons/120871)
'공부 > 코딩' 카테고리의 다른 글
[프로그래머스/입문] 분수의 덧셈 (1) | 2024.12.04 |
---|