문제: https://school.programmers.co.kr/learn/courses/30/lessons/134240
1. 코드
class Solution {
public String solution(int[] food) {
String answer = "";
for(int i = 1; i < food.length; i++) {
String num = String.valueOf(i);
answer += num.repeat(food[i] / 2);
}
StringBuffer sb = new StringBuffer(answer);
answer += "0" + sb.reverse().toString();
return answer;
}
}
2. 설명
문제에 대한 설명이 많이 길지만 자세히 읽고 정리하면 생각보다 내용은 간단합니다.
String answer = "";
for(int i = 1; i < food.length; i++) {
String num = String.valueOf(i);
answer += num.repeat(food[i] / 2);
}
물은 무조건 1잔만 배치되기에 1번 음식부터 접근합니다. 그리고 해당 음식에 대한 번호를 문자열로 변환하여 음식의 양(food[i])에서 2로 나눈 몫만큼 반복하여 문자열에 추가해 줍니다. 이렇게 한다면 왼쪽부터 음식을 먹는 선수의 음식 배치가 완료됩니다.
StringBuffer sb = new StringBuffer(answer);
answer += "0" + sb.reverse().toString();
return answer;
완성된 음식 배치에서 가운데에는 무조건 물이 배치되어야 하기에 "0"과 완성된 음식배치를 반대로 한다면 오른쪽 선수의 음식 배치이기에 반전시켜서 합쳐주면 정답이 됩니다.
3. 정리
- 물은 무조건 가운데 1개만 존재한다.
- 왼쪽의 선수 음식 배치부터 완성시킨다.
- 왼쪽 선수 음식 배치의 순서를 반대로 한 것은 오른쪽 선수의 음식 배치와 동일하다.
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges
'컴퓨터 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 132267번: 콜라 문제 [Java] (0) | 2023.07.21 |
---|---|
프로그래머스 - 142086번: 가장 가까운 같은 글자 [Java] (0) | 2023.07.20 |
프로그래머스 - 68644번: 두 개 뽑아서 더하기 [Java] (0) | 2023.07.18 |
프로그래머스 - 12915번: 문자열 내 마음대로 정렬하기 [Java] (0) | 2023.07.17 |
프로그래머스 - 81301번: 숫자 문자열과 영단어 [Java] (0) | 2023.07.16 |