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

박신희·2026년 3월 3일

[풀이] 프로그래머스

목록 보기
35/35

📌 풀이과정

  • 일단 가운데에 무조건 0이 있을 거고
  • 각 요소마다 대칭이어야하기때문에 짝수로 나뉘어져야한다 (7개가 있어도 6개만 사용)
  • 칼로리가 낮은 음식부터 배치하고 물(0)을 배치, 그리고 대칭으로 붙여주면 된다.

🤜 풀이코드1

import java.util.*;

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

💬 with Gemini

📍 repeat() 메서드 사용

for(int j=0;j<food[i]/2;j++) sb.append(i);
이렇게 사용하는 것보다 repeat() 메서드를 사용해서
sb.append(String.valueOf(i).repeat(food[i]/2)
으로 깔끔하게 작성할 수 있다.

📍 reverse() 사용할 때, 주의할 점

reverse()를 사용한 후에는 뒤집혀져있기 때문에,
사본을 만들어서 작성하는걸 추천하더라

// 원본 sb는 건드리지 않고, 뒤집힌 문자열만 새로 만들고 싶을 때
String right = new StringBuilder(sb).reverse().toString();

🤜 풀이코드2 (with Gemini)

import java.util.*;

class Solution {
    public String solution(int[] food) {
        StringBuilder sb = new StringBuilder();
        
        // 1. 왼쪽 음식 배치
        for (int i = 1; i < food.length; i++) {
            int count = food[i] / 2;
            sb.append(String.valueOf(i).repeat(count));
        }
        
        // 2. 왼쪽 + 물(0) + 뒤집은 왼쪽
        String left = sb.toString();
        return left + "0" + sb.reverse().toString();
    }
}
profile
log my moments 'u')/

0개의 댓글