728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/12899
이 문제, 쉬운 것 같지만 어려웠다.
단순히 3으로 나눈 나머지만을 활용하여 푸는 문제인 줄 알았건만, 효율성 문제에서 시간초과로 탈탈 털려버렸다.
아래 와 같은 코드는 시간 초과가 나서 실패한 코드다.
class Solution {
public String solution(int n) {
String answer = "";
int num = n, r = 0;
while(num > 0) {
r = num % 3;
num /= 3;
if(r == 0) {
num--;
r = 4;
}
answer = r + answer;
}
return answer;
}
}
이 문제는 다른 블로그를 참고하여 풀었는데,
참고했던 곳이 어디인지 기억이 나지 않아서 그 곳의 링크를 달지는 못하지만,
간략한 설명을 하면
String[] num = {"4", "1", "2"};
배열을 사용하여,
3으로 나눈 나머지가 0일 때, 4를 붙이는 계산 방식을 배열로 녹여내었다.
whlie 반복문에 조건을 n이 0보다 클 때라는 조건을 걸어서
답으로 리턴할 문자열에 num의 n을 3으로 나눈 나머지의 인덱스를 붙여넣고,
n은 n-1을 3으로 나눈 값을 넣으면 된다.
class Solution {
public String solution(int n) {
String answer = "";
String[] num = {"4", "1", "2"};
while (n > 0) {
answer = num[n % 3] + answer;
n = (n - 1) / 3;
}
return answer;
}
}
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/java] 모음사전 - 재귀를 이용하여 푸는 문제 (0) | 2022.04.01 |
---|---|
[프로그래머스/java] 2 x n 타일링 - DP (0) | 2022.03.13 |
[프로그래머스/java] 소수찾기 - 백트래킹 사용(예제 코드 포함) (0) | 2022.03.04 |
[프로그래머스/java] 가장 큰 수 - Arrays.sort Comparator Override (0) | 2022.03.02 |
[프로그래머스/java] 괄호 회전하기 - Stack 사용 (0) | 2022.02.26 |
댓글