코딩테스트 풀이/JAVA
[LeetCode/Easy] 1556. Thousand Separator
무지맘
2023. 4. 12. 15:47
1. Input
1) int n
2. Output
1) 3자리마다 점(.)을 찍은 문자열을 반환
3. Constraint
1) 0 <= n <= 2^31 - 1
4. Example
Input: n = 1234 -> Output: "1.234"
Input: n = 987 -> Output: "987"
5. Code
1) 첫 코드(2023/04/12)
String answer = "";
if(n>0){
Stack<Character> s = new Stack<>();
int count = 0;
while(n>0){
if(count<3){
s.push((char)(n%10 + '0'));
n /= 10;
count++;
} else{
s.push('.');
count = 0;
}
}
while(!s.empty())
answer += s.pop();
} else
answer = "0";
return answer;
2) 1000이상만 처리하는 코드(2023/04/12)
String answer = "";
if(n>=1000){
Stack<Character> s = new Stack<>();
int count = 0;
while(n>0){
if(count<3){
s.push((char)(n%10 + '0'));
n /= 10;
count++;
} else{
s.push('.');
count = 0;
}
}
while(!s.empty())
answer += s.pop();
} else
answer = n+"";
return answer;
- 1번 코드에 비해 메모리를 약간 덜 먹는다.
3) 3자리씩 처리한 코드(2023/04/12)
Stack<String> s = new Stack<>();
String num = String.valueOf(n);
while(num.length()>3){
s.push("."+num.substring(num.length()-3,num.length()));
num = num.substring(0,num.length()-3);
}
String answer = num;
while(!s.empty())
answer += s.pop();
return answer;
- 2번에 비해 메모리를 훨씬 덜 먹고, 코드도 짧아졌다.