Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 푸드 파이트 대회 (Java/자바) 본문

알고리즘문제/프로그래머스(Java)

[프로그래머스] - 푸드 파이트 대회 (Java/자바)

luke-king 2025. 12. 1. 15:03

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

 

프로그래머스

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

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

풀이.


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

이번 문제는 프로그래머스 "푸드 파이트 대회" 문제다.

문제 접근은 주어진 food[] 배열 값 인덱스 1~3 값들을 2명의 사람으로 순서대로 나눈 몫으로 인덱스 순서를 반복해 주고 거꾸로 다시 출력 한 뒤 최종값 가운데에 0 이 들어가면 되는 문제다.

그럼 바로 풀이 해보겠다.

 

1. 문자열로 저장하고 반대로 나오는 값도 저장해주기 위한 함수 사용을 위해 StringBuilder를 생성해준다.

 

2. for문을 사용해 food[i]번재 인덱스 값들을 2로 나눠 몫을 구해준다 이 cnt변수 값은 각 인덱스의 값들을 몇 번 반복할지 정해 주기 위함이다.

 

3. append()를 사용해서 i(인덱스 값이 아닌 순서)를 문자열로 형 변환 한 뒤 reapt()를 사용해 cnt만큼 반복해준다.

 

4. answer 변수 값에 위 for문으로 뽑아낸 sb값에 + "0"을 해준다.

 

5. 마지막으로 sb값을 reverse()를 사용해 순서를 역순으로 해서 answer 값에 붙이면 원하는 값이 나오게 된다.