코딩테스트/Programmers

[프로그래머스] 푸드 파이트 대회

grove1212 2025. 2. 28. 15:49

1. 내 답안

StringBuilder로 작업했다.

class Solution {
    public String solution(int[] food) {
        StringBuilder sb = new StringBuilder();
        for(int i = 1 ; i< food.length; i++){
            sb.append((i+"").repeat(food[i]/2));
        }
        StringBuilder result = new StringBuilder();
        result.append(sb).append("0").append(sb.reverse());
        return result.toString();
    }
}

 

2. 다른 분들 답안

문자열 앞뒤에 횟수만큼 새로 덧붙여준다.

class Solution {
    public String solution(int[] food) {
        String answer = "0";

        for (int i = food.length - 1; i > 0; i--) {
            for (int j = 0; j < food[i] / 2; j++) {
                answer = i + answer + i; 
            }
        }

        return answer;
    }
}

 

3. 실행 시간 비교

 

- 아래가 내 코드, 위에가 다른 분 코드이다.

- 내 코드는 stringBuilder를 이용해서 문자열을 추가할 때 속도를 높였다.

- String은 불벽 객체라서 문자를 추가할 때마다 새로운 객체를 생성해서 String 참조변수에 할당한다. 그만큼 시간복잡도와 공간복잡도가 높아질 수 밖에 없다. 역시 알고리즘 풀때만이라도 StringBuilder를 사용하는게 좋다는 것을 한번 더 깨달았다.