[프로그래머스] 124나라의 숫자 (Java)

SeongWon Oh·2021년 8월 29일
0
post-thumbnail

🔗 문제 링크

https://programmers.co.kr/learn/courses/30/lessons/12899


🤔 문제 해석

문제를 읽어보면 3진법을 푸는 문제이다.
하지만 3진법과 다른 점이 있다면 값을 나누었을 때 나머지가 0이라면 몫에서 1을 빼고, 나머지 0을 4로 표현해야한다는 차이점이 있다.
이러한 규칙을 통해 문제를 풀어보았다.


👨🏻‍💻 내가 작성한 코드

class Solution {
    public String solution(int n) {
        StringBuilder answer = new StringBuilder();        
        int share = n;
        int remain;
        
        while (share != 0) {
            remain = share % 3;
            share = share / 3;
            
            if(remain == 0){
                remain = 4;
                share -= 1;
            }
            answer.append(remain);        
        }       
        return answer.reverse().toString();
    }
}

📝 결론

문제를 풀며 StringBuffer를 다시 익히게 되었다.
String의 경우는 불변 속성을 가지고 있기에 "hello"+"world"의 연산을 하는 경우 2개의 메모리는 그대로 유지하고 "hello world"라는 새로운 메모리 영역을 가르키게 된다. 이러한 이유때문에 String을 사용하면 시간 및 메모리 낭비가 심하게 발생한다.
반면에 StringBuilder는 동일 객체 내에서도 문자열 변경이 가능하고 파이썬처럼 append(), delete(), reverse()등의 api가 존재하여 문제를 풀때 사용하면 편한 장점이 존재한다.

앞으로 String대신 StringBuilder를 자주 사용하도록 노력하자!

profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글