Skip to content

Commit c957623

Browse files
committed
[level 1] Title: 숫자 짝꿍, Time: 94.10 ms, Memory: 29.2 MB -BaekjoonHub
1 parent b698c68 commit c957623

File tree

2 files changed

+127
-0
lines changed

2 files changed

+127
-0
lines changed
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# [level 1] 숫자 짝꿍 - 131128
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/131128)
4+
5+
### 성능 요약
6+
7+
메모리: 29.2 MB, 시간: 94.10 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > 연습문제
12+
13+
### 채점결과
14+
15+
정확성: 100.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2026년 03월 03일 12:08:05
20+
21+
### 문제 설명
22+
23+
<p>두 정수 <code>X</code>, <code>Y</code>의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). <code>X</code>, <code>Y</code>의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. <code>X</code>, <code>Y</code>의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다.</p>
24+
25+
<p>예를 들어, <code>X</code> = 3403이고 <code>Y</code> = 13203이라면, <code>X</code>와 <code>Y</code>의 짝꿍은 <code>X</code>와 <code>Y</code>에서 공통으로 나타나는 3, 0, 3으로 만들 수 있는 가장 큰 정수인 330입니다. 다른 예시로 <code>X</code> = 5525이고 <code>Y</code> = 1255이면 <code>X</code>와 <code>Y</code>의 짝꿍은 <code>X</code>와 <code>Y</code>에서 공통으로 나타나는 2, 5, 5로 만들 수 있는 가장 큰 정수인 552입니다(<code>X</code>에는 5가 3개, <code>Y</code>에는 5가 2개 나타나므로 남는 5 한 개는 짝 지을 수 없습니다.)<br>
26+
두 정수 <code>X</code>, <code>Y</code>가 주어졌을 때, <code>X</code>, <code>Y</code>의 짝꿍을 return하는 solution 함수를 완성해주세요.</p>
27+
28+
<h5>제한사항</h5>
29+
30+
<ul>
31+
<li>3 ≤ <code>X</code>, <code>Y</code>의 길이(자릿수) ≤ 3,000,000입니다.</li>
32+
<li><code>X</code>, <code>Y</code>는 0으로 시작하지 않습니다.</li>
33+
<li><code>X</code>, <code>Y</code>의 짝꿍은 상당히 큰 정수일 수 있으므로, 문자열로 반환합니다.</li>
34+
</ul>
35+
36+
<hr>
37+
38+
<h5>입출력 예</h5>
39+
<table class="table">
40+
<thead><tr>
41+
<th>X</th>
42+
<th>Y</th>
43+
<th>result</th>
44+
</tr>
45+
</thead>
46+
<tbody><tr>
47+
<td>"100"</td>
48+
<td>"2345"</td>
49+
<td>"-1"</td>
50+
</tr>
51+
<tr>
52+
<td>"100"</td>
53+
<td>"203045"</td>
54+
<td>"0"</td>
55+
</tr>
56+
<tr>
57+
<td>"100"</td>
58+
<td>"123450"</td>
59+
<td>"10"</td>
60+
</tr>
61+
<tr>
62+
<td>"12321"</td>
63+
<td>"42531"</td>
64+
<td>"321"</td>
65+
</tr>
66+
<tr>
67+
<td>"5525"</td>
68+
<td>"1255"</td>
69+
<td>"552"</td>
70+
</tr>
71+
</tbody>
72+
</table>
73+
<hr>
74+
75+
<h5>입출력 예 설명</h5>
76+
77+
<p><strong>입출력 예 #1</strong></p>
78+
79+
<ul>
80+
<li><code>X</code>, <code>Y</code>의 짝꿍은 존재하지 않습니다. 따라서 "-1"을 return합니다.</li>
81+
</ul>
82+
83+
<p><strong>입출력 예 #2</strong></p>
84+
85+
<ul>
86+
<li><code>X</code>, <code>Y</code>의 공통된 숫자는 0으로만 구성되어 있기 때문에, 두 수의 짝꿍은 정수 0입니다. 따라서 "0"을 return합니다.</li>
87+
</ul>
88+
89+
<p><strong>입출력 예 #3</strong></p>
90+
91+
<ul>
92+
<li><code>X</code>, <code>Y</code>의 짝꿍은 10이므로, "10"을 return합니다.</li>
93+
</ul>
94+
95+
<p><strong>입출력 예 #4</strong></p>
96+
97+
<ul>
98+
<li><code>X</code>, <code>Y</code>의 짝꿍은 321입니다. 따라서 "321"을 return합니다.</li>
99+
</ul>
100+
101+
<p><strong>입출력 예 #5</strong></p>
102+
103+
<ul>
104+
<li>지문에 설명된 예시와 같습니다.</li>
105+
</ul>
106+
107+
108+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
def solution(X, Y):
2+
x_cnt = {str(i): X.count(str(i)) for i in range(10)}
3+
y_cnt = {str(i): Y.count(str(i)) for i in range(10)}
4+
5+
res = []
6+
7+
for i in range(9, -1, -1):
8+
digit = str(i)
9+
count = min(x_cnt[digit], y_cnt[digit])
10+
res.append(digit * count)
11+
12+
answer = "".join(res)
13+
14+
if not answer:
15+
return "-1"
16+
if answer[0] == "0":
17+
return "0"
18+
19+
return answer

0 commit comments

Comments
 (0)