Skip to main content

[Java] 134240 푸드 파이트 대회


1. 문제

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

image.png

image.png


2. 정답 코드

ArrayList

  • ArrayList를 선언해서 먼저 0 추가
  • food 배열을 순회하며 2보다 큰 요소들에 대해 food[i] / 2 만큼 ArrayList 앞 뒤로 i(인덱스) 추가
    • add(E e)는 ArrayList 오른쪽 끝에 요소 추가
    • add(index, E e)는 ArrayList의 0번 인덱스에 요소 추가
import java.util.*;
import java.util.stream.Collectors;

class Solution {
    public String solution(int[] food) {
        ArrayList<Integer> answer = new ArrayList<>();
        answer.add(0);
        
        for (int i = food.length - 1; i >= 0; i--) {
            if (food[i] >= 2) {
                for (int j = 0; j < food[i]/2; j++) {
                    answer.add(i);
                    answer.add(0,i);
                }
            }
        }
        
        return answer.stream().map(String::valueOf).collect(Collectors.joining());
    }
}

오답정리

ArrayList를 String 으로 반환하는 부분이 어려웠다.
숫자들을 String으로 변환 후 이어 붙이는 체이닝 메서드는 아래와 같다.

return answer.stream()
             .map(String::valueOf) // Integer → String
             .collect(Collectors.joining()); // 이어 붙이기