[๋ฐฑ์ค€/1092] ๋ฐฐ ๐Ÿ›ณ

Ko Seoyoungยท2021๋…„ 3์›” 30์ผ
0

๋ฐฑ์ค€ 1092 ๋ฐฐ ๐Ÿ›ณ

๋ฌธ์ œ๋งํฌ

๋ฌธ์ œ ์ดํ•ด

์ด ๋ฌธ์ œ๋Š” ํ•ญ๊ตฌ์—์„œ N๊ฐœ์˜ ํฌ๋ ˆ์ธ์œผ๋กœ M๊ฐœ์˜ ํ™”๋ฌผ์„ ์˜ฎ๊ฒจ์•ผํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.
์ด ๋•Œ ๊ฐ ํ™”๋ฌผ์€ ๋ฐ•์Šค ์•ˆ์— ๋„ฃ์–ด์ ธ ์žˆ์œผ๋ฏ€๋กœ 'ํ™”๋ฌผ==๋ฐ•์Šค'๋กœ ๋™์ผ์‹œํ•˜๊ฒ ๋‹ค.

๋ฌธ์ œ์˜ ์กฐ๊ฑด์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
1. M๊ฐœ์˜ ๋ฐ•์Šค์™€ N๊ฐœ์˜ ํฌ๋ ˆ์ธ์ด ์žˆ๋‹ค.
2. ์ž…๋ ฅ์œผ๋กœ ๊ฐ ๋ฐ•์Šค์˜ ๋ฌด๊ฒŒ์™€ ๊ฐ ํฌ๋ ˆ์ธ์˜ ๋ฌด๊ฒŒ ์ œํ•œ์ด ์ฃผ์–ด์ง„๋‹ค.
3. ํฌ๋ ˆ์ธ์€ ํ•œ๋ฒˆ์— ๋ฌด๊ฒŒ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋Š” ๋ฐ•์Šค ํ•˜๋‚˜๋งŒ ์šด๋ฐ˜ํ• ์ˆ˜ ์žˆ๋‹ค.
4. ๋ชจ๋“  ํฌ๋ ˆ์ธ์€ ๋™์‹œ์— ์›€์ง์ด๊ณ , ํ•œ๋ฒˆ ๋ฌผ๊ฑด์„ ์˜ฎ๊ธฐ๋Š”๋ฐ 1๋ถ„์ด ๊ฑธ๋ฆฐ๋‹ค.

์ถœ๋ ฅํ•ด์•ผํ•˜๋Š” ๊ฐ’์€ ๋ชจ๋“  ๋ฐ•์Šค๋ฅผ ๋ฐฐ๋กœ ์˜ฎ๊ธฐ๋Š”๋ฐ ๋“œ๋Š” ์‹œ๊ฐ„์˜ ์ตœ์†Ÿ๊ฐ’์ด๊ณ , ๋ชจ๋“  ๋ฐ•์Šค๋ฅผ ๋ฐฐ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์—†์œผ๋ฉด -1์„ ์ถœ๋ ฅํ•œ๋‹ค


์ฝ”๋“œ


def canContinue(canMove):
    for cm in canMove:
        if cm == True:
            return True
    return False


def getCanCarryBoxIndex(craneWeight, boxs):
    if craneWeight < boxs[len(boxs) - 1]:
        return -1
    for i, boxWeigth in enumerate(boxs):
        if craneWeight >= boxWeigth:
            return i

# ์ž…๋ ฅ ----------------------------------------

N = int(input()) # ํฌ๋ ˆ์ธ์˜ ๊ฐœ์ˆ˜
cranes = list(map(int, input().split())) # ๊ฐ ํฌ๋ ˆ์ธ์˜ ๋ฌด๊ฒŒ์ œํ•œ
M = int(input()) # ๋ฐ•์Šค์˜ ๊ฐœ์ˆ˜
boxs = list(map(int, input().split())) # ๊ฐ ๋ฐ•์Šค์˜ ๋ฌด๊ฒŒ

# --------------------------------------------

cranes.sort(reverse=True)
boxs.sort(reverse=True)

canMove = [True] * N

mins = 0
while True:
    mins += 1
    # part 1
    for i in range(N):
        if len(boxs) == 0:
            break
        if canMove[i] == True:
            idx = getCanCarryBoxIndex(cranes[i], boxs)
            if idx == -1:
                canMove[i] = False
            else:
                del boxs[idx]
    # part 2
    if len(boxs) == 0: # ๋” ์ด์ƒ ์˜ฎ๊ธธ ๋ฐ•์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
        break
    if canContinue(canMove) == False: # ๋ชจ๋“  ๋ฐ•์Šค๊ฐ€ ํฌ๋ ˆ์ธ์˜ ์ œํ•œ ๋ฌด๊ฒŒ๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ๋ฐ•์Šค๋ฅผ ์˜ฎ๊ธธ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ
        mins = -1
        break

print(mins)

ํ’€์ด

์ฃผ์š” ์•„์ด๋””์–ด๋Š” ๋ฐ•์Šค๊ฐ€ ์˜ฎ๊ฒจ์ง€๋ฉด ์˜ฎ๊ฒจ์ง„ ๋ฐ•์Šค๋Š” ๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๋ฐ•์Šค๋ฅผ ๋ฆฌ์ŠคํŠธ์—์„œ ์•„์˜ˆ ์ œ๊ฑฐํ•˜๋ฉด ๋‹ค์Œ๋ฒˆ ์˜ฎ๊ธธ ๋ฐ•์Šค๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ ์งง์•„์ง€๋ฏ€๋กœ ํƒ์ƒ‰ ์‹œ๊ฐ„์ด ์ ์  ์ค„์–ด๋“ค ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํŒŒ์ด์ฌ์—์„œ๋Š” del list[i]์™€ ๊ฐ™์ด del ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด i๋ฒˆ์งธ์— ํ•ด๋‹นํ•˜๋Š” ์•„์ดํ…œ์„ ๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

(1) ์ž…๋ ฅ ์ดํ›„ ์ฒซ๋ฒˆ์งธ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ cranes์™€ boxs๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๋ฌด๊ฒŒ๊ฐ€ ํฐ ๋ฐ•์Šค๋ถ€ํ„ฐ ์ด๋™์‹œํ‚ค๊ธฐ ์œ„ํ•จ์ด๋‹ค.

(2) ๋‹ค์Œ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ N์ธ canMove ๋ฐฐ์—ด์„ ๋ชจ๋‘ True๋กœ ์ดˆ๊ธฐํ™” ์‹œํ‚จ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋” ์ด์ƒ ํ™”๋ฌผ์„ ์˜ฎ๊ธธ ์ˆ˜ ์—†๋Š” ํฌ๋ ˆ์ธ์ธ ๊ฒฝ์šฐ, ํ•ด๋‹น ํฌ๋ ˆ์ธ์˜canMove ๊ฐ’์„ False๋กœ ์ง€์ •ํ•ด ์ค€๋‹ค. ๋” ์ด์ƒ ํ™”๋ฌผ์„ ์˜ฎ๊ธธ ์ˆ˜ ์—†๋Š” ํฌ๋ ˆ์ธ์˜ ํŒ๋‹จ ์กฐ๊ฑด์€ ๋‚จ์€ ๋ฐ•์Šค๋“ค์ด ๋ชจ๋‘ ์ž์‹ ์˜ ๋ฌด๊ฒŒ์ œํ•œ์„ ์ดˆ๊ณผํ•œ ๊ฒฝ์šฐ์ด๋‹ค.

(3) mins๋Š” ์ด ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด๊ณ , ๋ฐ˜๋ณต๋ฌธ์˜ ํ•œ ์‚ฌ์ดํด๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค.

(4) ํ•œ ์‚ฌ์ดํด์€ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋จผ์ €, part 2๋Š” while๋ฌธ์˜ escape ์กฐ๊ฑด์ด๋‹ค.
    if len(boxs) == 0: ๋” ์ด์ƒ ์˜ฎ๊ธธ ๋ฐ•์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ๋ฐ•์Šค๋ฅผ ๋‹ค ์˜ฎ๊ฒผ์œผ๋ฏ€๋กœ break๋ฅผ ํ†ตํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•˜๊ณ  ์†Œ์š” ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•œ๋‹ค.
    if canContinue(canMove) == False: ์˜ฎ๊ธธ ๋ฐ•์Šค๊ฐ€ ๋‚จ์•„ ์žˆ์ง€๋งŒ ๋‚จ์•„์žˆ๋Š” ๋ชจ๋“  ๋ฐ•์Šค๊ฐ€ ํฌ๋ ˆ์ธ์˜ ์ œํ•œ ๋ฌด๊ฒŒ๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ๋ฐ•์Šค๋ฅผ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋Š” ํฌ๋ ˆ์ธ์ด ์—†์„ ๋•Œ, ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•˜๊ณ  -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

  • part 1: ๊ฐ ํฌ๋ ˆ์ธ์— ๋Œ€ํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋Š”๋ฐ, ํฌ๋ ˆ์ธ์„ ์›€์ง์ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด getCanCarryBoxIndex ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์˜ฎ๊ธธ ๋ฐ•์Šค์˜ ์ธ๋ฑ์Šค๋ฅผ ์•Œ์•„๋‚ธ๋‹ค. ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฐ•์Šค๊ฐ€ ์—†์œผ๋ฉด ํ•ด๋‹น ํฌ๋ ˆ์ธ์˜ canMove ๊ฐ’์„ False๋กœ ๋ฐ”๊พธ๊ณ , ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฐ•์Šค๊ฐ€ ์žˆ์œผ๋ฉด ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ๋ฐ•์Šค๋ฅผ ๋ฆฌ์ŠคํŠธ์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.


profile
Web Frontend Developer ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป #React #Nextjs #ApolloClient

0๊ฐœ์˜ ๋Œ“๊ธ€