1. ๋ฌธ์ ์ค๋ช
์๋ ํ์ธ์! ์ค๋์ ๋ฐฑ์ค ์จ๋ผ์ธ ์ ์ง์ ๋ฌธ์ ๋ฒํธ 7795๋ฒ์ ํ์ด๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ฃผ์ด์ง ๋ ๋ฆฌ์คํธ์์ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ ๊ฐ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค.
๋ฌธ์ URL: https://www.acmicpc.net/problem/7795
2. ์ ๊ทผ๋ฒ
1. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค ๋ ๊ฐ์ ๋ฆฌ์คํธ A์ B๊ฐ ์ฃผ์ด์ง๋๋ค.
2. A์ ์์ ์ค ํ๋์ B์ ์์ ์ค ํ๋๋ฅผ ์ ํํ์ ๋, A์ ์์๊ฐ B์ ์์๋ณด๋ค ํด ๋ ํด๋น ์์ ์ธ์ด์ผ ํฉ๋๋ค.
3. ๋ฆฌ์คํธ A์ B๋ฅผ ์ ๋ ฌํฉ๋๋ค.
4. A์ ๊ฐ ์์์ ๋ํด B์ ์์๋ค๊ณผ ๋น๊ตํ์ฌ ๋ช ๊ฐ์ ์์๊ฐ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ์นด์ดํธํฉ๋๋ค.
5. ํฌ ํฌ์ธํฐ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ํจ์จ์ ์ผ๋ก ์์ ๊ฐ์๋ฅผ ์ ๋๋ค:
• A ๋ฆฌ์คํธ์ B ๋ฆฌ์คํธ์ ํฌ์ธํฐ๋ฅผ ๊ฐ๊ฐ ์์์ ์ ๋ก๋๋ค.
• A ๋ฆฌ์คํธ์ ํ์ฌ ์์๊ฐ B ๋ฆฌ์คํธ์ ํ์ฌ ์์๋ณด๋ค ํฌ๋ฉด, ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ ๊ฐ์๋ฅผ ์ธ๊ณ B ๋ฆฌ์คํธ์ ํฌ์ธํฐ๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
• ๊ทธ๋ ์ง ์์ผ๋ฉด A ๋ฆฌ์คํธ์ ํฌ์ธํฐ๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
• ์ด ๊ณผ์ ์ ๋ฆฌ์คํธ A์ ๋ชจ๋ ์์์ ๋ํด ๋ฐ๋ณตํฉ๋๋ค.
3. ์ ๋ต ์ฝ๋
import sys
input = sys.stdin.readline
# ๊ฐ ํ
์คํธ ์ผ์ด์ค ์๋ฅผ ์
๋ ฅ๋ฐ์
T = int(input())
# ๊ฐ ํ
์คํธ ์ผ์ด์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ
ans = [0] * T
for i in range(T):
# ๊ฐ ํ
์คํธ ์ผ์ด์ค์์ N๊ณผ M์ ์
๋ ฅ๋ฐ์
N, M = map(int, input().split())
# A์ B ๋ฆฌ์คํธ๋ฅผ ์
๋ ฅ๋ฐ๊ณ ์ ๋ ฌํจ
A = sorted(list(map(int, input().split())))
B = sorted(list(map(int, input().split())))
cnt = 0 # ํฐ ์์ ๊ฐ์๋ฅผ ์ธ๊ธฐ ์ํ ๋ณ์
a = 0 # A ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค
b = 0 # B ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค
# A ๋ฆฌ์คํธ์ ๋ชจ๋ ์์๋ฅผ ํ์ธํ ๋๊น์ง ๋ฐ๋ณต
while a < N:
if b == M: # B ๋ฆฌ์คํธ์ ๋์ ๋๋ฌํ ๊ฒฝ์ฐ
cnt += b # ํ์ฌ๊น์ง์ b ๊ฐ์ cnt์ ๋ํจ
a += 1 # A ๋ฆฌ์คํธ์ ๋ค์ ์์๋ก ์ด๋
else:
if A[a] <= B[b]: # A์ ํ์ฌ ์์๊ฐ B์ ํ์ฌ ์์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ
cnt += b # ํ์ฌ๊น์ง์ b ๊ฐ์ cnt์ ๋ํจ
a += 1 # A ๋ฆฌ์คํธ์ ๋ค์ ์์๋ก ์ด๋
else:
b += 1 # A์ ํ์ฌ ์์๊ฐ B์ ํ์ฌ ์์๋ณด๋ค ํฐ ๊ฒฝ์ฐ, B์ ๋ค์ ์์๋ก ์ด๋
# ํ์ฌ ํ
์คํธ ์ผ์ด์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅ
ans[i] = cnt
# ๊ฐ ํ
์คํธ ์ผ์ด์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅ
for i in range(len(ans)):
print(ans[i])
4. ์ฝ๋ ์ค๋ช
1. ๋จผ์ ํ ์คํธ ์ผ์ด์ค ์๋ฅผ ์ ๋ ฅ๋ฐ๊ณ , ๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
2. ๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ๋ค์์ ๊ณผ์ ์ ์ํํฉ๋๋ค:
• N๊ณผ M์ ์ ๋ ฅ๋ฐ๊ณ , A์ B ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ๋ ฌํฉ๋๋ค.
• ๋ ๋ฆฌ์คํธ์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ ๊ฐ์๋ฅผ ์ธ๊ธฐ ์ํด ๋ณ์๋ค์ ์ด๊ธฐํํฉ๋๋ค.
• A ๋ฆฌ์คํธ์ ๋ชจ๋ ์์๋ฅผ ํ์ธํ๋ฉด์, B ๋ฆฌ์คํธ์ ์์์ ๋น๊ตํ์ฌ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ ๊ฐ์๋ฅผ ์ ๋๋ค.
• ๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํฉ๋๋ค.
3. ๋ชจ๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
[์ฃผ์ ๋ก์ง - while ๋ฌธ]
• while a < N: A ๋ฆฌ์คํธ์ ๋ชจ๋ ์์๋ฅผ ํ์ธํ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
• if b == M: B ๋ฆฌ์คํธ์ ๋์ ๋๋ฌํ ๊ฒฝ์ฐ, ํ์ฌ๊น์ง์ b ๊ฐ์ cnt์ ๋ํ๊ณ A ๋ฆฌ์คํธ์ ๋ค์ ์์๋ก ์ด๋ํฉ๋๋ค.
• if A[a] <= B[b]: A์ ํ์ฌ ์์๊ฐ B์ ํ์ฌ ์์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ, ํ์ฌ๊น์ง์ b ๊ฐ์ cnt์ ๋ํ๊ณ A ๋ฆฌ์คํธ์ ๋ค์ ์์๋ก ์ด๋ํฉ๋๋ค.
• else: A์ ํ์ฌ ์์๊ฐ B์ ํ์ฌ ์์๋ณด๋ค ํฐ ๊ฒฝ์ฐ, B ๋ฆฌ์คํธ์ ๋ค์ ์์๋ก ์ด๋ํฉ๋๋ค.
5. Github์ผ๋ก ํ์ธ
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ(๋ฐฑ์ค)_Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ(๋ฐฑ์ค) 1912[์ฐ์ํฉ] (0) | 2024.06.17 |
---|---|
BOJ(๋ฐฑ์ค) 2559[์์ด] (0) | 2024.06.17 |
BOJ(๋ฐฑ์ค) 14252[๊ณต์ฝ์์ด] (0) | 2024.06.15 |
BOJ(๋ฐฑ์ค) 1978[์์ ์ฐพ๊ธฐ] (0) | 2024.06.13 |
BOJ(๋ฐฑ์ค) 2503[์ซ์ ์ผ๊ตฌ] (0) | 2024.06.07 |