[Programmers] #120834 - 외계행성의 나이 [Java][C++][Python]
[Programmers] #120834 - 외계행성의 나이 [Java][C++][Python]
1. 아이디어
age를 10진법 자릿수 그대로 유지한 채, 각 자리 숫자(0 ~ 9)를 a부터 j까지의 알파벳 문자로 치환하면 되는 문제다. 자리 순서만 지키면 되므로, 10으로 나눈 나머지를 낮은 자리부터 모아 마지막에 뒤집어 반환하면 된다.
2. 복잡도
| 접근 | 시간 | 공간 |
|---|---|---|
| 풀이 | $O(D)$ | $O(D)$ |
($D$ = age의 자릿수 $\approx \log_{10}(\text{age})$)
3. 코드
풀이 [Java][C++][Python]
1
2
3
4
5
6
7
8
9
10
11
class Solution {
public String solution(int age) {
StringBuilder sb = new StringBuilder();
while (age > 0) {
sb.append((char) (age % 10 + 'a'));
age /= 10;
}
return sb.reverse().toString();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <bits/stdc++.h>
using namespace std;
string solution(int age) {
string s;
while (age) {
s += age % 10 + 'a';
age /= 10;
}
reverse(s.begin(), s.end());
return s;
}
1
2
def solution(age):
return str(age).translate(str.maketrans("0123456789", "abcdefghij"))
str.maketrans로 0 ~ 9를 a ~ j에 대응시킨 표를 만들고 translate로 각 자릿수를 치환하는 방식으로 해결했다.
This post is licensed under CC BY 4.0 by the author.