코딩테스트

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

mhui123 2025. 4. 1. 19:20
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/134240

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제

칼로리가 낮은 순서대로 음식별 수 목록 food를 사용하여 음식배치 answer를 만들어 반환하라.

제한사항

1.food[0] 은 항상 물을 의미하는 '0' 의 갯수이며 1이다.
2.answer의 정중앙값은 항상 "0"이다.
3.answer의 양 끝~ 정중앙까지 칼로리가 낮은 음식 ~ 높은 음식 순서로 배치하되
두 사람이 사용해아 하므로 food[i] % 2 개는 버린다.

 

접근

정중앙을 기준으로 왼쪽의 음식배치를 만들고 그 후 "0"을 붙인 뒤 왼쪽배치를 거꾸로 오른쪽에 붙여 반환하도록 하였다.

public String solution(int[] food){
        StringBuilder answer = new StringBuilder();

        for(int i = 1; i < food.length; i++){
            int cnt = food[i] / 2; // 배치 갯수
            while(cnt > 0){
                answer.append(i);
                cnt --;
            }
        }
        answer.append(0);
        char[] chars = answer.toString().toCharArray();
        for(int i = chars.length -2; i >= 0; i--){
            answer.append(chars[i]);
        }

        return answer.toString();
    }
반응형