728x90
반응형
124나라
문제
미
리
보
기
방
지
나만의 풀이
class Solution {
public String solution(int n) {
String answer = "";
String[] list = {"1","2","4"};
while(n != 0) {
answer = list[--n % 3] + answer;
n /= 3;
}
return answer;
}
}
해설 ↓
더보기
접근 방법) 우선 숫자가 세 개로 이루어져있으니 3진수와 비슷한 느낌이라고 생각들어
아래 효율성 테스트에서 불합격 되었던 ② 번 방법으로 접근했습니다.
1. 자세히 보니 124 나라의 수엔 0이 없다는 점
2. 자리수가 바뀔때마다 n 을 -1 해주어야 값이 잘 나온다는 점
이 두 가지를 발견하고 반복문에서 항상 n을 1 씩 빼주며 돌렸습니다.
하지만 효율성이 좋지 않다고 나와 ① 방법인 거듭제곱을 해보았습니다.
하지만 거듭제곱 또한 연산이라 그런지 효율성이 좋지 않다고 나왔습니다.
생각해보니 ①번 방법은 1, 2, 4 세 가지 수는 일정하게 반복되지만 계속 연산을 해야하더라고요.
그래서 애초에 1, 2, 4 를 배열에 넣고 계산해보는 맨 위 풀이대로 진행해보았더니 효율성 테스트에 통과하였습니다.
↓효율성 테스트에서 불합격 되었던 코드들...↓
① 거듭제곱
더보기
class Solution {
public String solution(int n) {
String answer = "";
do {
answer = (int)Math.pow(2, --n % 3) + answer;
n /= 3;
} while(n != 0);
return answer;
}
}
② 3진수
더보기
public class Solution {
public String solution(int n) {
String answer = "";
do {
answer = (--n % 3) + answer;
n /= 3;
} while(n != 0);
return answer.replaceAll("2", "4").replaceAll("1", "2").replaceAll("0", "1");
}
}
728x90
반응형
'IT > 코딩 테스트 연습' 카테고리의 다른 글
프로그래머스 코딩 테스트 - 프린터 (0) | 2021.01.05 |
---|