[Java] 134240 푸드 파이트 대회
1. 문제
프로그래머스 [Java] 푸드 파이트 대회
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()); // 이어 붙이기