728x90
def solution(coin, cards):
answer = 0
n = len(cards)
target = n + 1
myCard = {}
for i in range(n // 3):
myCard[cards.pop(0)] = 1
all_round = len(cards) // 2
temp = {}
nowRound = 1
for i in range(all_round):
temp[cards.pop(0)] = 1
temp[cards.pop(0)] = 1
check = False
for key in myCard.copy():
reverse = target - key
if myCard.get(reverse) != None:
del myCard[reverse]
del myCard[key]
check = True
nowRound += 1
break
if coin > 0 and check == False:
for key in myCard.copy():
reverse = target - key
if coin > 0 and temp.get(reverse) != None:
del temp[reverse]
del myCard[key]
check = True
nowRound += 1
coin -= 1
break
if coin > 1 and check == False:
for key in temp.copy():
reverse = target - key
if temp.get(reverse) != None:
del temp[key]
del temp[reverse]
coin -= 2
nowRound += 1
check = True
break
if check == False:
break
return nowRound
2024 KAKAO WINTER INTERNSHIP
🫡 KeyPoint
- (1) 내가 소유한 카드에서 처리 (2) 코인을 소비해 추가 획득 가능한 카드와 섞어 처리 (3) 추가 획득 가능한 카드 내에서 처리
- 내가 소유하고 있거나, 획득 가능한 카드는 딕셔너리로 활용해 key로 바로 접근해서 불필요한 순회 방지
✔️ 링크: 코딩테스트 연습 - n + 1 카드게임 | 프로그래머스 스쿨 (programmers.co.kr)