ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90

๐Ÿšฉ ๊ทธ๋ฆฌ๋””

 

thinking

ํ™”๋ฌผ์˜ ์šฉ๋Ÿ‰์ด ํŠธ๋Ÿญ์˜ ์ ์žฌ์šฉ๋Ÿ‰๋ณด๋‹ค ์ž‘์œผ๋ฉด ๊ฒฐ๊ณผ๊ฐ’์— ๋”ํ•ด์ฃผ๋Š” ๋ฌธ์ œ์ธ๋ฐ,

ํ™”๋ฌผ์˜ ๊ฐœ์ˆ˜(N)๊ฐ€ ๋” ๋งŽ๊ฑฐ๋‚˜ ํŠธ๋Ÿญ์˜ ๊ฐœ์ˆ˜(M)๊ฐ€ ๋” ๋งŽ์„ ๊ฒฝ์šฐ

์ธ๋ฑ์Šค์—๋Ÿฌ(list index out of range)๊ฐ€ ๋‚˜๊ธฐ ๋•Œ๋ฌธ์— while ๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ,

N๊ณผ M์˜ ์ตœ์†Œ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์„ ๋•Œ๋งŒ ๋ฐ˜๋ณต๋ฌธ์ด ๋Œ์•„๊ฐ€๋„๋ก ์„ค์ •ํ–ˆ๋‹ค.

 

์ฝ”๋“œ

T = int(input())


for tc in range(1, T+1):
    N, M = map(int, input().split())  # N: ์ปจํ…Œ์ด๋„ˆ์ˆ˜, M: ํŠธ๋Ÿญ์ˆ˜
    weight = sorted(list(map(int, input().split())), reverse=True)  # N๊ฐœ์˜ ํ™”๋ฌผ ๋ฌด๊ฒŒ
    truck = sorted(list(map(int, input().split())), reverse=True)  # M๊ฐœ ํŠธ๋Ÿญ์˜ ์ ์žฌ์šฉ๋Ÿ‰

    res = 0
    cnt = 0
    i, j = 0, 0  # truck, weight
    while True:
        if cnt == min(N, M):
            break
        if truck[i] >= weight[j]:
            res += weight[j]
            i += 1
            j += 1
        else:
            j += 1
        cnt += 1

    print("#{} {}".format(tc, res))
๋Œ“๊ธ€