PROGRAMMERS_Lv2_124 나라의 숫자
📁 [Lv2_12899] 124 나라의 숫자
class Solution {
static StringBuilder sb = new StringBuilder();
public String solution(int n) {
String answer = "";
while(n > 0){
// 3으로 나눈 나머지
int mod = (n % 3);
// 나누어떨어지면 4
if(mod == 0){
sb.append(4);
}
// 나머지가 1이면 1
else if(mod == 1){
sb.append(1);
}
// 나머지가 2이면 2
else{
sb.append(2);
}
// 만약 나누어떨어지면 -1 해주기
if(mod == 0){
n -= 1;
}
n /= 3;
}
// 역순으로 돌려주기
answer = sb.reverse().toString();
return answer;
}
}
🤔 나의 생각
처음에 좀 해매다가 인터넷 도움을 받아 규칙을 발견하고 정리하고 구현해 보았다.
while 문에 다 받고 나서 마지막에 for문을 통해 역순해주니 확실이 n이 5억개까지라 그런지 효율성에서 시간 초과가 났다.
그래서 생각난 것이 StringBuilder 였는데 StringBuilder를 써주고 뒤에 reverse().toString()을 써주니 시간이 … 진짜 깜짝 놀랄 정도로 감소되었다.
거의다 0.05초안에 끝나고.. 그전에는 10초까지 걸렸었는데..
참 시간복잡도의 중요성을 깨닫게 해주는 문제였다.