์๋ ํ์ธ์! ์ค๋์ ๋ฐฑ์ค์ 11728๋ฒ ๋ฌธ์ ์ธ “๋ฐฐ์ด ํฉ์น๊ธฐ” ๋ฌธ์ ๋ฅผ ํจ๊ป ํ์ด๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ๋ ๋ ๊ฐ์ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ํ๋์ ์ ๋ ฌ๋ ๋ฐฐ์ด๋ก ํฉ์น๋ ๋ฌธ์ ์ ๋๋ค. ํจ๊ป ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด๋๋ก ํ์ฃ !
1. ๋ฌธ์ ์ค๋ช
1. ๋ ๊ฐ์ ์ ๋ ฌ๋ ๋ฐฐ์ด A์ B๊ฐ ์ฃผ์ด์ง๋๋ค.
2. ์ด ๋ ๋ฐฐ์ด์ ํฉ์ณ์ ํ๋์ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
๋ฌธ์ URL : https://www.acmicpc.net/problem/11728
2. ์ ๊ทผ๋ฒ
1) ์ ๋ ฅ๋ฐ๊ธฐ: ๋ฐฐ์ด A์ ๋ฐฐ์ด B์ ํฌ๊ธฐ์ ์์๋ค์ ์ ๋ ฅ๋ฐ์ต๋๋ค.
2) ๋ณํฉ: ๋ ๋ฐฐ์ด์ ์ ๋ ฌ๋ ์ํ๋ก ๋ณํฉํฉ๋๋ค.
3) ๊ฒฐ๊ณผ ์ถ๋ ฅ: ๋ณํฉ๋ ๋ฐฐ์ด์ ์ถ๋ ฅํฉ๋๋ค.
3. ์ ๋ต ์ฝ๋
import sys
input = sys.stdin.readline
N, M = map(int, input().split()) # ์ฒซ ๋ฒ์งธ ์ค์์ N(๋ฐฐ์ด A์ ํฌ๊ธฐ)๊ณผ M(๋ฐฐ์ด B์ ํฌ๊ธฐ)์ ์ฝ์ด์จ๋ค.
A = list(map(int, input().split())) # ๋ ๋ฒ์งธ ์ค์์ ๋ฐฐ์ด A์ ์์๋ค์ ์ฝ์ด์จ๋ค.
B = list(map(int, input().split())) # ์ธ ๋ฒ์งธ ์ค์์ ๋ฐฐ์ด B์ ์์๋ค์ ์ฝ์ด์จ๋ค.
ans = [] # ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ ๋ฆฌ์คํธ
i = 0; j = 0 # ๋ ๋ฐฐ์ด A์ B์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๊ฐ ๋ํ๋ด๋ ๋ณ์ ์ด๊ธฐํ
while i < N and j < M: # ๋ ๋ฐฐ์ด ์ค ํ๋์ ๋์ ๋ค๋ค๋ฅผ ๋๊น์ง
if A[i] < B[j]: # ๋ฐฐ์ด A์ ํ์ฌ ์์๊ฐ ๋ฐฐ์ด B์ ํ์ฌ ์์๋ณด๋ค ์์ผ๋ฉด
ans.append(A[i]) # ๋ฐฐ์ด A์ ํ์ฌ ์์๋ฅผ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ถ๊ฐ
i += 1
else: # ๋ฐฐ์ด B์ ํ์ฌ ์์๊ฐ ๋ฐฐ์ด A์ ํ์ฌ ์์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด
ans.append(B[j]) # ๋ฐฐ์ด B์ ํ์ฌ ์์๋ฅผ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ถ๊ฐ
j += 1
# ๋ฐฐ์ด A ๋๋ ๋ฐฐ์ด B์ ๋จ์ ์์๊ฐ ์๋ ๊ฒฝ์ฐ ์ฒ๋ฆฌ
if i != N: # ๋ฐฐ์ด A์ ๋จ์ ์์๊ฐ ์์ผ๋ฉด
ans.extend(A[i:]) # ๋ฐฐ์ด A์ ๋จ์ ์์๋ค์ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ถ๊ฐ
if j != M: # ๋ฐฐ์ด B์ ๋จ์ ์์๊ฐ ์์ผ๋ฉด
ans.extend(B[j:]) # ๋ฐฐ์ด B์ ๋จ์ ์์๋ค์ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ถ๊ฐ
print(*ans) # ๊ฒฐ๊ณผ ๋ฆฌ์คํธ๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅ
4. ์ฝ๋ ์ค๋ช
1) ์ ๋ ฅ๋ฐ๋ ๋ถ๋ถ
• sys.stdin.readline์ ์ฌ์ฉํ์ฌ ์ ๋ ฅ ์๋๋ฅผ ๋์ ๋๋ค.
• ์ฒซ ๋ฒ์งธ ์ค์์ N(๋ฐฐ์ด A์ ํฌ๊ธฐ)๊ณผ M(๋ฐฐ์ด B์ ํฌ๊ธฐ)์ ์ ๋ ฅ๋ฐ์ต๋๋ค.
• ๋ ๋ฒ์งธ ์ค์์ ๋ฐฐ์ด A์ ์์๋ค์, ์ธ ๋ฒ์งธ ์ค์์ ๋ฐฐ์ด B์ ์์๋ค์ ์ ๋ ฅ๋ฐ์ต๋๋ค.
2) ๋ณํฉ
• ๋ ๋ฐฐ์ด A์ B๋ฅผ ์์ฐจ์ ์ผ๋ก ๋น๊ตํ๋ฉด์ ๋ ์์ ๊ฐ์ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ ans์ ์ถ๊ฐํฉ๋๋ค.
• ํ ๋ฐฐ์ด์ด ๋๋๋ฉด ๋จ์ ๋ค๋ฅธ ๋ฐฐ์ด์ ์์๋ค์ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ถ๊ฐํฉ๋๋ค.
3) ๊ฒฐ๊ณผ ์ถ๋ ฅ
• ์ต์ข ๋ณํฉ๋ ๋ฐฐ์ด์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํฉ๋๋ค.
***
if i != N: # ๋ฐฐ์ด A์ ๋จ์ ์์๊ฐ ์์ผ๋ฉด
ans.extend(A[i:]) # ๋ฐฐ์ด A์ ๋จ์ ์์๋ค์ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ถ๊ฐ
if j != M: # ๋ฐฐ์ด B์ ๋จ์ ์์๊ฐ ์์ผ๋ฉด
ans.extend(B[j:]) # ๋ฐฐ์ด B์ ๋จ์ ์์๋ค์ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ์ถ๊ฐ
์ด ๋ถ๋ถ์ ์ฝ๋๊ฐ ํ์ํ ์ด์ ๋?
๋ ๋ฐฐ์ด A์ B๋ฅผ ๋ณํฉํ๋ ๊ณผ์ ์์ while i < N and j < M: ๋ฃจํ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ฃจํ๋ ๋ ๋ฐฐ์ด ์ค ํ๋๋ผ๋ ๋์ ๋๋ฌํ๋ฉด ์ข ๋ฃ๋ฉ๋๋ค. ๋ฐ๋ผ์, ๋ ๋ฐฐ์ด ์ค ํ๋๋ ๋์ ๋๋ฌํ์ง๋ง ๋ค๋ฅธ ๋ฐฐ์ด์ ์์ง ๋์ ๋๋ฌํ์ง ์์์ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๋ฐฐ์ด A์ ๋ฐฐ์ด B๊ฐ ๋ค์๊ณผ ๊ฐ๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค:
• A = [1, 3, 5]
• B = [2, 4, 6, 8]
while ๋ฃจํ๋ฅผ ํตํด ๋ณํฉ ๊ณผ์ ์ ์งํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์์๊ฐ ans ๋ฆฌ์คํธ์ ์ถ๊ฐ๋ฉ๋๋ค:
1] A[0] (1) < B[0] (2) ์ด๋ฏ๋ก ans = [1], i = 1
2] A[1] (3) > B[0] (2) ์ด๋ฏ๋ก ans = [1, 2], j = 1
3] A[1] (3) < B[1] (4) ์ด๋ฏ๋ก ans = [1, 2, 3], i = 2
4] A[2] (5) > B[1] (4) ์ด๋ฏ๋ก ans = [1, 2, 3, 4], j = 2
5] A[2] (5) < B[2] (6) ์ด๋ฏ๋ก ans = [1, 2, 3, 4, 5], i = 3
์ด ์์ ์์ ๋ฐฐ์ด A๋ ๋์ ๋๋ฌํ์ง๋ง ๋ฐฐ์ด B๋ ์์ง ๋ ๊ฐ์ ์์ [6, 8]์ด ๋จ์ ์์ต๋๋ค. ๋ฐ๋ผ์, while ๋ฃจํ๊ฐ ์ข ๋ฃ๋ฉ๋๋ค.
๋ฃจํ ์ข ๋ฃ ํ if i != N:์ if j != M: ๋ถ๋ถ์ด ์คํ๋์ด ๋จ์ ์์๋ค์ ans ๋ฆฌ์คํธ์ ์ถ๊ฐํฉ๋๋ค:
• if i != N:๋ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์์ผ๋ฏ๋ก ์คํ๋์ง ์์ต๋๋ค.
• if j != M:๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ฏ๋ก B[j:] ์ฆ, [6, 8]์ด ans ๋ฆฌ์คํธ์ ์ถ๊ฐ๋ฉ๋๋ค.
์ต์ข ์ ์ผ๋ก ans = [1, 2, 3, 4, 5, 6, 8]์ด ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ด ๋ถ๋ถ์ ๋ ๋ฐฐ์ด ์ค ํ๋๊ฐ ๋์ ๋๋ฌํ ์ดํ์๋ ๋จ์ ์๋ ์์๋ค์ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ํฌํจ์ํค๊ธฐ ์ํด ํ์ํฉ๋๋ค. ์ด๋ก์จ ๋ชจ๋ ์์๊ฐ ์ ๋ ฌ๋ ์ํ๋ก ๋ณํฉ๋ฉ๋๋ค.
***
5. Github์ผ๋ก ํ์ธ
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ(๋ฐฑ์ค)_Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ(๋ฐฑ์ค) 10819[์ฐจ์ด๋ฅผ ์ต๋๋ก] (0) | 2024.07.05 |
---|---|
BOJ(๋ฐฑ์ค) 14465[์๊ฐ ๊ธธ์ ๊ฑด๋๊ฐ ์ด์ 5] (0) | 2024.07.04 |
BOJ(๋ฐฑ์ค) 1946[์ ์ ์ฌ์] (0) | 2024.06.28 |
BOJ(๋ฐฑ์ค) 14501[ํด์ฌ] (0) | 2024.06.25 |
BOJ(๋ฐฑ์ค) 19942[๋ค์ด์ดํธ] (0) | 2024.06.25 |