๋ฐฑ์ค 1092๋ฒ
https://www.acmicpc.net/problem/1092
๋ฌธ์
ํ๊ธฐ
์๊ฐ ์ด๊ณผ, Value Error, Index Error, ํ๋ ธ์ต๋๋ค
๋ชจ๋ ์ค๋ต์ ๋ค ๊ฒช์ ๋ฌธ์ ์๋ค.
์ด๋ ํ ๋ฐ์ค๋ ๋ค ์ ์๋ ํฌ๋ ์ธ์ ์ธ๋ชจ ์๊ธฐ ๋๋ฌธ์ ์ผ๋จ ์ ๊ฑฐํ๊ณ ,
ํฌ๋ ์ธ์ ๊ฐ์ฅ ํฐ ์์๋ถํฐ ์ ๋ ฌํ ํ, ๋ฐ์ค์ list ์์์ ๋ค ์ ์๋
๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ๋ฐ์ค๋ถํฐ ๋ค ์ ์๊ฒ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ค.
ํด๋น ๋ฐ์ค๋ฅผ ๋ค๊ณ ๋๋ฉด ๋ฐ์ค๋ฅผ pop ํ๊ณ , ๋ค์ ํฌ๋ ์ธ์ผ๋ก ๋์ด๊ฐ๋ฉฐ,
๋ค์ ํฌ๋ ์ธ์ด ๋ค ์ ์๋ ๋ฐ์ค๊ฐ ์์ผ๋ฉด, ๊ทธ ํฌ๋ ์ธ์ pop ํ๋ค.
ํฌ๋ ์ธ์ 1๋ฐํด ๋ค ์ฐ๋ฉด time ๊ฐ์ 1 ์ฆ๊ฐ์ํค๋ ์์ผ๋ก ๊ตฌํํ์๊ณ
์์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ ๋ชจ๋ ๋์ ๋ต๊ณผ ์ผ์นํ๋ค. ๊ทธ๋ฆฌํ์ฌ ์ ๋ต์ด๋ผ ์๊ฐํ๊ณ ์ ์ถํ์๋ค.
ํ์ง๋ง ํฌ๋ ์ธ๊ณผ ๋ฐ์ค์ ๋ฌด๊ฒ๋ฅผ ๊ณ์ ๋น๊ตํ๊ณ ๊ฐ์ ์ ์ฅํ๋ ๊ณผ์ ์์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ ๊ฒ ๊ฐ์๋ค.
๊ฒฝํ์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ ์ฌ๋งํ๋ฉด ์ ๊ทผ ๋ฐฉ์ ์์ฒด๊ฐ ์๋ชป ๋ ๊ฒ์ด์๋ค.
์ฝ๋๋ฅผ ์ฌ๋ฌ ๋ฒ ์์ ํ์์ง๋ง ํด๊ฒฐํ์ง ๋ชปํ๊ณ , ์์ ์ ๋ถ ์ง์ด ํ ์ฒ์๋ถํฐ ์ฝ๋๋ฅผ ์งฐ๋ค.
์ผ์ผ์ด ๋น๊ตํ๋ฉด์ ๋ฐ์ค๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด ์๋๋ผ,
for๋ฌธ ์์์ ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ๋ฐ์ค๋ถํฐ ํฌ๋ ์ธ์ ๋ฌด๊ฒ์ ๋น๊ตํ์ฌ
๋ค ์ ์์ผ๋ฉด ๋ค๋ฉด ๋๋๊ฒ์ด์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ฐ์ค๋ฅผ ์ ๊ฑฐํ๊ณ , ๋ค์ ํฌ๋ ์ธ์ผ๋ก ๋์ด๊ฐ๋ค.
ํ๊ณ ๋๋ ํ๋ฌดํ์ง๋ง, ์ค๋ ์ํ ์ฐฉ์ค๋ก ๋ค์๋ถํฐ๋ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋์ค๋ฉด ์ต๋ํ ์ฝ๊ฒ ์ ๊ทผํ๋
๋ฐฉํฅ์ ๋จผ์ ๋ ์ฌ๋ฆด ์ ์๋ ๊ณ๊ธฐ๋ฅผ ์ป์ ๊ฒ ๊ฐ๋ค..
๋์ ์๋ชป๋ ํ์ด
import sys
input = sys.stdin.readline
box = []
n= int(input())
crain = sorted(list(map(int,input().split())))
m= int(input())
box =(sorted(list(map(int,input().split()))))
crain.reverse()
box.reverse()
k= min(box)
remove_list = []
for i in crain:
if i<k:
remove_list.append(i)
for i in remove_list:
if i in crain:
crain.remove(i)
#์ด๋ ํ ๋ฐ์ค๋ ๋ค์์๋ ํฌ๋ ์ธ์ ์ผ๋จ ์ ๊ฑฐํ๊ณ ์์ํ๋ค.
#์์์ ๋ถํฐ 1๊ฐ์ฉ ๋น๊ตํด ๊ฐ๋ฉด์ ํ์ ํ๋ค
#crain์ ๊ธธ์ด๋งํผ ๋ค ๋๋ฉด pass ํ๋ฉด์ box๋ฅผ cnt๋งํผ popํ๋ค.
#crain์ ๊ธธ์ด๋ฅผ ๋ค ๋๊ธฐ ์ ์ ํด๋น list๊ฐ ๋งํ๋ฉด crain์ ์ธ๋ฑ์ค ๊ฐ๋งํผ popํ๋ค. ๋ค์ ๋ฐ๋ณต์์
time = 0
cnt = 0
while True:
max_box = 0
new_max_box = 0
for i in range(len(crain)):
error = 0 #ํฌ๋ ์ธ ์ฒดํฌ์ฉ
for j in box: #๋ฐ์ค์์์
if j<= crain[i]: #ํฌ๋ ์ธ์ด ํด๋น ๋ฐ์ค๋ณด๋ค ํฌ๋ค๋ฉด
max_box=j #์ด ๋ฐ์ค๋ ํด๋น ํฌ๋ ์ธ์ผ๋ก ๋ค์์์ต๋๋ค.
error +=1 #์ด ํฌ๋ ์ธ์ ์ธ๋ชจ์์ต๋๋ค.
if max_box>new_max_box: # ๋ค์์๋ ๋ฐ์ค์ค ๊ฐ์ฅ ํฐ ๋ฐ์ค๋ฅผ ์ ์ฅํ๊ธฐ ์ํจ
new_max_box = max_box
if error ==0: #ํฌ๋ ์ธ์ด ์ธ๋ชจ์์ผ๋ฉด
crain.pop(i) #์ ๊ฑฐํฉ๋๋ค.
box.remove(new_max_box) #1๋ฃจํด์ ๋๊ณ crain[i]๋ก ๋ค์์๋ ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ๋ฐ์ค๊ฐ ์ ๊ฑฐ๋จ
if len(box)==0: #๋์ด์ ์ฎ๊ธธ ๋ฐ์ค๊ฐ ์์ผ๋ฉด
print(time+1) #์ถ๋ ฅํ๊ณ ์ข
๋ฃํ๋๋ฐ, ์งํ์ค์ธ ์ํฉ์์ ์ข
๋ฃ๋์๊ธฐ ๋๋ฌธ์ ์๊ฐ์ 1 ์ฆ๊ฐํด์ ์ถ๋ ฅ
exit()
max_box=0
new_max_box = 0
cnt +=1 #ํฌ๋ ์ธ์ 1๊ฐ ์ฌ์ฉํ์ต๋๋ค.
if cnt == len(crain): #ํฌ๋ ์ธ์ ํ๋ฐํด ๋ค ์ฌ์ฉํ๋ค๋ฉด
time +=1 # ์์์๊ฐ 1 ์ฆ๊ฐ
cnt = 0 #ํฌ๋ ์ธ ์ฌ์ฉํ์ ์ด๊ธฐํ
๋์ ํ์ด
import sys
input = sys.stdin.readline
box = []
n= int(input())
crain = sorted(list(map(int,input().split())))
m= int(input())
box =(sorted(list(map(int,input().split()))))
crain.reverse()
box.reverse()
if box[0] > crain[0]: #๋ค์์๋๊ฒ ์์ผ๋ฉด -1์ถ๋ ฅํ ์ข
๋ฃ
print(-1)
exit()
time = 0
while len(box) > 0: #๋ฐ์ค๊ฐ ์ ๋ถ ์ฎ๊ฒจ์ง๋๊น์ง
time += 1
# ํฌ๋ ์ธ์ ๋๋ฉด์ ๋ฐ์ค๋ฅผ ์ฎ๊ธด๋ค.
for i in crain:
for j in range(len(box)):
if i >= box[j]: #์ฎ๊ธธ์ ์๋ค๋ฉด
del box[j] #๊ทธ ๋ฐ์ค๋ฅผ ์ง์ด๋ค.
break # ๊ทธ ๋ค์ crain์ผ๋ก ๋์๊ฐ๋ค.
print(time)