11728๋ฒ: ๋ฐฐ์ด ํฉ์น๊ธฐ
์ฒซ์งธ ์ค์ ๋ฐฐ์ด A์ ํฌ๊ธฐ N, ๋ฐฐ์ด B์ ํฌ๊ธฐ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N, M ≤ 1,000,000) ๋์งธ ์ค์๋ ๋ฐฐ์ด A์ ๋ด์ฉ์ด, ์ ์งธ ์ค์๋ ๋ฐฐ์ด B์ ๋ด์ฉ์ด ์ฃผ์ด์ง๋ค. ๋ฐฐ์ด์ ๋ค์ด์๋ ์๋ ์ ๋๊ฐ์ด 109๋ณด๋ค ์๊ฑฐ
www.acmicpc.net
์ค๋ช
์ ๋ ฌ๋์ด์๋ ๋ ๋ฐฐ์ด A, B๋ฅผ ํฉ์น ํ ์ ๋ ฌํด์ ์ถ๋ ฅํ๋ค.
์ฒซ์งธ ์ค์๋ ๋ฐฐ์ด A, B์ ํฌ๊ธฐ N๊ณผ M์ด ์ฃผ์ด์ง๋ค. (1๋ถํฐ)
๋์งธ ์ค์๋ ๋ฐฐ์ด A์ ๋ด์ฉ์ด, ์
์งธ ์ค์๋ ๋ฐฐ์ด B์ ๋ด์ฉ์ด ์ฃผ์ด์ง๋ค.
ํ์ด
• ๋ฐฉ๋ฒ 1 - sort()
- ๋ฌธ์ํ์ผ๋ก ์ ๋ ฅ๋ฐ๊ณ ํ ๋ฆฌ์คํธ์ A, B๋ฅผ ๋ชจ๋ ์ ์ฅํ๋ค.
- ๋ฆฌ์คํธ ๋ด์ ์๋ ์์๋ฅผ ๋ชจ๋ ์ ์ํ์ผ๋ก ๋ณํํ๋ค.
- sort()๋ฅผ ์ฌ์ฉํด ์ ๋ ฌํ๊ณ ๋ฆฌ์คํธ์์ ๊บผ๋ด ์ถ๋ ฅํ๋ค.
• ๋ฐฉ๋ฒ 2 - two pointer algorithm
- ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ ๋ฆฌ์คํธ์ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํด์ผ ํ ๋ ๋ ๊ฐ์ ์ ์ ์์น๋ฅผ ๊ธฐ๋กํ๋ฉด์ ์ฒ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฏธํ๋ค
Solution
ํ์ด 1. ์ ๋ ฌ ์ฌ์ฉ
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
num = []
for _ in range(2):
num += input().split() #['3', '5', '2', '9']
ans = []
for i in num:
ans.append(int(i))
ans.sort() #๋ฌธ์ํ์ด๋ผ๋ ์ ๋ ฌ์ด ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ์์ผ๋ก ์ ๋ ฌ ๋จ ์ฆ, 100๊ณผ 11์ผ ๋ ์ถ๋ ฅ์ด 100 11์. ์ ๋ต์ 11 100
print(*ans)
ํ์ด 2. ํฌ ํฌ์ธํฐ ์ฌ์ฉ
import sys
input = sys.stdin.readline
n, m = map(int, input().rsplit())
a = list(map(int, input().rsplit()))
b = list(map(int, input().rsplit()))
left, right = 0, 0
ans = []
while left < n and right < m:
if a[left] < b[right]:
ans.append(a[left])
left += 1
else:
ans.append(b[right])
right += 1
#์์ while๋ฌธ์์ ์ฒ๋ฆฌ๋์ง ๋ชปํ ๊ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํจ
while left < n:
ans.append(a[left])
left += 1
while right < m:
ans.append(b[right])
right += 1
print(' '.join(map(str, ans)))
TIL
• rsplit() : ์ค๋ฅธ์ชฝ๋ถํฐ ๋ฌธ์์ด์ ์ง์ ๊ตฌ๋ถ์(๊ธฐ๋ณธ๊ฐ : ๊ณต๋ฐฑ) ๊ธฐ์ค์ผ๋ก ์๋ผ์ ๋ฆฌ์คํธ ์์ฑ
๐ฉ๐ป ํ๊ณ
1์ฐจ ์ ์ถ์ ์คํจํ์๋๋ฐ ์ด์ ๋, ์ ์ํ์ผ๋ก ๋ณํ์ํค์ง ์๊ณ ์ ๋ ฌ์ ์์ผฐ๋๋ฐ ์ ๋๊ธธ๋ ๊ทธ๋๋ก ์งํํ๋ค. ๊ทธ๋ฌ๋ ๋ฐ๋ก๊ฐ 'A = 100, B = 11'์ผ ๋ ๋ต์ '11 100'์ธ๋ฐ ๋ด ์ถ๋ ฅ์ '100 11' ์ด์๋ค. ์ ์๋ผ๋ ์ฌ์ ์์ผ๋ก ์ ๋ ฌ๋๋ ๋ฌธ์ ๊ฐ ์์ด์ ์ ์ํ์ผ๋ก ๋ณํ์ํค๋ ์ฝ๋๋ฅผ ์ถ๊ฐ ์์ผฐ๋ค.
2๊ฐ์ง ํ์ด๊ฐ ์๋๋ฐ ํฌ ํฌ์ธํฐ๋ก๋ ์ฒ์ ํ์ด๋ด์ ๋ค๋ฅธ ํ์ด๋ฅผ ์ฐธ๊ณ ํ๋ค. ์ด๋ถ ํ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ ๋น์ทํด๋ณด์ฌ์ ์ดํดํ๊ธฐ ์ฌ์ธ ๊ฒ ๊ฐ๋ค. ์ ๋ ฌ๊ณผ ํฌ ํฌ์ธํฐ๋ฅผ ์๋์ ๋ฉ๋ชจ๋ฆฌ ์์์ ๋น๊ตํ์ ๋ ํฌ ํฌ์ธํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ๋ง์ด ์ฐจ์งํ์ง๋ง, ์๋๋ ์กฐ๊ธ ๋น ๋ฅด๋ค. ํ์ง๋ง ์ด ๋ฌธ์ ์์๋ ์ ๋ ฌ์ ์ฐ๋ ๊ฒ ๋ ๊น๋ํด ๋ณด์ด๊ธด ํ๋ค.
• ํฌ ํฌ์ธํฐ : ๋ฉ๋ชจ๋ฆฌ 304392KB, ์๋ 1736 ms
• ์ ๋ ฌ : ๋ฉ๋ชจ๋ฆฌ 295080, ์๋ 1760 ms
'๐งฉ Algorithm > [BOJ] Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| BOJ 9655๋ฒ : ๋ ๊ฒ์ (Python/๊ตฌํ, DP/Silver 5) (0) | 2024.03.10 |
|---|---|
| BOJ 2164๋ฒ : ์นด๋2 (Python/์๋ฃ๊ตฌ์กฐ(ํ)/Silver 4) (1) | 2024.01.30 |
| BOJ 10814๋ฒ : ๋์ด์ ์ ๋ ฌ (Python/์๋ฃ๊ตฌ์กฐ/Silver 5) (1) | 2023.10.31 |
| BOJ 11722๋ฒ : ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด (Python/Silver 2) (1) | 2023.10.26 |
| BOJ 9461๋ฒ : ํ๋๋ฐ ์์ด (Python/Silver 3) (0) | 2023.10.26 |