Skip to content

Commit ca8e1ff

Browse files
committed
[level 1] Title: [PCCE 기출문제] 9번 / 지폐 접기, Time: 0.31 ms, Memory: 86.2 MB -BaekjoonHub
1 parent eab2b0e commit ca8e1ff

File tree

2 files changed

+137
-0
lines changed

2 files changed

+137
-0
lines changed
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# [level 1] [PCCE 기출문제] 9번 / 지폐 접기 - 340199
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/340199)
4+
5+
### 성능 요약
6+
7+
메모리: 86.2 MB, 시간: 0.31 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > PCCE 기출문제
12+
13+
### 채점결과
14+
15+
정확성: 100.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2026년 02월 08일 22:53:24
20+
21+
### 문제 설명
22+
23+
<p>민수는 다양한 지폐를 수집하는 취미를 가지고 있습니다. 지폐마다 크기가 달라 지갑에 넣으려면 여러 번 접어서 넣어야 합니다. 예를 들어 지갑의 크기가 30 * 15이고 지폐의 크기가 26 * 17이라면 한번 반으로 접어 13 * 17 크기로 만든 뒤 90도 돌려서 지갑에 넣을 수 있습니다. 지폐를 접을 때는 다음과 같은 규칙을 지킵니다.</p>
24+
25+
<ul>
26+
<li>지폐를 접을 때는 항상 길이가 긴 쪽을 반으로 접습니다.</li>
27+
<li>접기 전 길이가 홀수였다면 접은 후 소수점 이하는 버립니다.</li>
28+
<li>접힌 지폐를 그대로 또는 90도 돌려서 지갑에 넣을 수 있다면 그만 접습니다.</li>
29+
</ul>
30+
31+
<p>지갑의 가로, 세로 크기를 담은 정수 리스트 <code>wallet</code>과 지폐의 가로, 세로 크기를 담은 정수 리스트 <code>bill</code>가 주어질 때, 지갑에 넣기 위해서 지폐를 최소 몇 번 접어야 하는지 return하도록 solution함수를 완성해 주세요.</p>
32+
33+
<p>지폐를 지갑에 넣기 위해 접어야 하는 최소 횟수를 구하는 과정은 다음과 같습니다.</p>
34+
<div class="highlight"><pre class="codehilite"><code>1. 지폐를 접은 횟수를 저장할 정수 변수 answer를 만들고 0을 저장합니다.
35+
2. 반복문을 이용해 bill의 작은 값이 wallet의 작은 값 보다 크거나 bill의 큰 값이 wallet의 큰 값 보다 큰 동안 아래 과정을 반복합니다.
36+
2-1. bill[0]이 bill[1]보다 크다면
37+
bill[0]을 2로 나누고 나머지는 버립니다.
38+
2-2. 그렇지 않다면
39+
bill[1]을 2로 나누고 나머지는 버립니다.
40+
2-3. answer을 1 증가시킵니다.
41+
3. answer을 return합니다.
42+
</code></pre></div>
43+
<ul>
44+
<li>위의 의사코드와 작동방식이 다른 코드를 작성해도 상관없습니다.</li>
45+
</ul>
46+
47+
<hr>
48+
49+
<h4>제한사항</h4>
50+
51+
<ul>
52+
<li><code>wallet</code>의 길이 = <code>bill</code>의 길이 = 2</li>
53+
<li>10 ≤ <code>wallet[0]</code>, <code>wallet[1]</code> ≤ 100</li>
54+
<li>10 ≤ <code>bill[0]</code>, <code>bill[1]</code> ≤ 2,000</li>
55+
</ul>
56+
57+
<hr>
58+
59+
<h4>입출력 예</h4>
60+
<table class="table">
61+
<thead><tr>
62+
<th>wallet</th>
63+
<th>bill</th>
64+
<th>result</th>
65+
</tr>
66+
</thead>
67+
<tbody><tr>
68+
<td>[30, 15]</td>
69+
<td>[26, 17]</td>
70+
<td>1</td>
71+
</tr>
72+
<tr>
73+
<td>[50, 50]</td>
74+
<td>[100, 241]</td>
75+
<td>4</td>
76+
</tr>
77+
</tbody>
78+
</table>
79+
<hr>
80+
81+
<h4>입출력 예 설명</h4>
82+
83+
<p>입출력 예 #1</p>
84+
85+
<ul>
86+
<li>지문과 동일합니다.</li>
87+
</ul>
88+
89+
<p>입출력 예 #2</p>
90+
91+
<ul>
92+
<li>지폐를 접으면 다음과 같이 크기가 줄어듭니다. 따라서 4번 접으면 지갑에 넣을 수 있습니다.</li>
93+
<li>[100, 241] -&gt; [100, 120] -&gt; [100, 60] -&gt; [50, 60] -&gt; [50, 30]</li>
94+
</ul>
95+
96+
<hr>
97+
98+
<ul>
99+
<li>cpp를 응시하는 경우 리스트는 배열과 동일한 의미이니 풀이에 참고해주세요.
100+
101+
<ul>
102+
<li>ex) 번호가 담긴 정수 <u><strong>리스트</strong></u> <code>numbers</code>가 주어집니다. =&gt; 번호가 담긴 정수 <u><strong>배열</strong></u> <code>numbers</code>가 주어집니다.</li>
103+
</ul></li>
104+
<li>java를 응시하는 경우 리스트는 배열, 함수는 메소드와 동일한 의미이니 풀이에 참고해주세요.
105+
106+
<ul>
107+
<li>ex) solution <u><strong>함수</strong></u>가 올바르게 작동하도록 한 줄을 수정해 주세요. =&gt; solution <u><strong>메소드</strong></u>가 올바르게 작동하도록 한 줄을 수정해 주세요.</li>
108+
</ul></li>
109+
</ul>
110+
111+
112+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution {
2+
public int solution(int[] wallet, int[] bill) {
3+
int answer = 0;
4+
5+
int x = bill[0];
6+
int y = bill[1];
7+
8+
Integer minBill = Math.min(x, y);
9+
Integer maxBill = Math.max(x, y);
10+
int minWallet = Math.min(wallet[0], wallet[1]);
11+
int maxWallet = Math.max(wallet[0], wallet[1]);
12+
13+
while (Math.min(x, y) > minWallet || Math.max(x, y) > maxWallet) {
14+
if (x > y) {
15+
x = (int) Math.floor(x / 2);
16+
} else {
17+
y = (int) Math.floor(y / 2);
18+
}
19+
20+
answer++;
21+
}
22+
23+
return answer;
24+
}
25+
}

0 commit comments

Comments
 (0)