코린이의 소소한 공부노트

[LeetCode/Easy] 1556. Thousand Separator 본문

코딩테스트 풀이/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번에 비해 메모리를 훨씬 덜 먹고, 코드도 짧아졌다.