Skip to content

Commit d2ddc1f

Browse files
committed
[level 1] Title: 푸드 파이트 대회, Time: 19.67 ms, Memory: 73.2 MB -BaekjoonHub
1 parent 7cd7d2c commit d2ddc1f

File tree

2 files changed

+103
-0
lines changed

2 files changed

+103
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# [level 1] 푸드 파이트 대회 - 134240
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/134240)
4+
5+
### 성능 요약
6+
7+
메모리: 73.2 MB, 시간: 19.67 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > 연습문제
12+
13+
### 채점결과
14+
15+
정확성: 100.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2025년 05월 07일 17:03:45
20+
21+
### 문제 설명
22+
23+
<p>수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다.</p>
24+
25+
<p>이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음식을 더 잘 먹을 수 있게 하려고 합니다. 이번 대회를 위해 수웅이는 음식을 주문했는데, 대회의 조건을 고려하지 않고 음식을 주문하여 몇 개의 음식은 대회에 사용하지 못하게 되었습니다.</p>
26+
27+
<p>예를 들어, 3가지의 음식이 준비되어 있으며, 칼로리가 적은 순서대로 1번 음식을 3개, 2번 음식을 4개, 3번 음식을 6개 준비했으며, 물을 편의상 0번 음식이라고 칭한다면, 두 선수는 1번 음식 1개, 2번 음식 2개, 3번 음식 3개씩을 먹게 되므로 음식의 배치는 "1223330333221"이 됩니다. 따라서 1번 음식 1개는 대회에 사용하지 못합니다.</p>
28+
29+
<p>수웅이가 준비한 음식의 양을 칼로리가 적은 순서대로 나타내는 정수 배열 <code>food</code>가 주어졌을 때, 대회를 위한 음식의 배치를 나타내는 문자열을 return 하는 solution 함수를 완성해주세요.</p>
30+
31+
<hr>
32+
33+
<h5>제한사항</h5>
34+
35+
<ul>
36+
<li>2 ≤ <code>food</code>의 길이 ≤ 9</li>
37+
<li>1 ≤ <code>food</code>의 각 원소 ≤ 1,000</li>
38+
<li><code>food</code>에는 칼로리가 적은 순서대로 음식의 양이 담겨 있습니다.</li>
39+
<li><code>food[i]</code>는 i번 음식의 수입니다.</li>
40+
<li><code>food[0]</code>은 수웅이가 준비한 물의 양이며, 항상 1입니다.</li>
41+
<li>정답의 길이가 3 이상인 경우만 입력으로 주어집니다.</li>
42+
</ul>
43+
44+
<hr>
45+
46+
<h5>입출력 예</h5>
47+
<table class="table">
48+
<thead><tr>
49+
<th>food</th>
50+
<th>result</th>
51+
</tr>
52+
</thead>
53+
<tbody><tr>
54+
<td>[1, 3, 4, 6]</td>
55+
<td>"1223330333221"</td>
56+
</tr>
57+
<tr>
58+
<td>[1, 7, 1, 2]</td>
59+
<td>"111303111"</td>
60+
</tr>
61+
</tbody>
62+
</table>
63+
<hr>
64+
65+
<h5>입출력 예 설명</h5>
66+
67+
<p><strong>입출력 예 #1</strong></p>
68+
69+
<ul>
70+
<li>문제 예시와 같습니다.</li>
71+
</ul>
72+
73+
<p><strong>입출력 예 #2</strong></p>
74+
75+
<ul>
76+
<li>두 선수는 1번 음식 3개, 3번 음식 1개를 먹게 되므로 음식의 배치는 "111303111"입니다.</li>
77+
</ul>
78+
79+
80+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
public String solution(int[] food) {
3+
String answer = "";
4+
5+
//1. 1번 인덱스부터 배열 돌면서 2로 나눈 몫 구하기
6+
for(int i=1; i<food.length; i++){
7+
int loop = food[i]/2;
8+
for(int j=0; j<loop; j++){
9+
answer+=i;
10+
}
11+
}
12+
13+
//2. 결과 문자열 뒤집기
14+
StringBuilder sb = new StringBuilder(answer);
15+
String reversed = sb.reverse().toString();
16+
17+
//3. 첫 결과 문자열에 0 추가하고 뒤집은 문자열 붙이기
18+
answer+='0';
19+
answer+=reversed;
20+
21+
return answer;
22+
}
23+
}

0 commit comments

Comments
 (0)