코딩테스트

[백준] 5587 카드 캡터 상근이 - Python

CuckooBird 2023. 2. 13. 15:55

백준 실버3 5587 카드 캡터 상근이 - Python

https://www.acmicpc.net/problem/5587

 

5587번: 카드 캡터 상근이

1번째 줄에 상근이의 점수를 출력하고, 2번째 줄에 근상이의 점수를 출력한다.

www.acmicpc.net


문제


코드

맞았습니다가 뜬 코드입니다. - 메모리 31388KB | 시간 44ms | 코드 길이 1113B

import sys
input = sys.stdin.readline
n = int(input())
p1 = list()
p2 = list(range(1, 2*n+1))
for _ in range(n):
    num = int(input())
    p1.append(num)
    p2.remove(num)
p1.sort()
p2.sort()
card = p1[0]
p1.pop(0)
turn = 1
cnt = 0
while len(p1) > 0 and len(p2) > 0:
    if turn == 1:
        for i in p2:
            if card < i:
                card = i
                p2.remove(i)
                turn = 0
                cnt = 0
                break
            else:
                cnt += 1
                if cnt == len(p2):
                    card = min(p1)
                    p1.remove(min(p1))
                    cnt = 0
                    break
    else:
        for i in p1:
            if card < i:
                card = i
                p1.remove(i)
                turn = 1
                cnt = 0
                break
            else:
                cnt += 1
                if cnt == len(p1):
                    card = min(p2)
                    p2.remove(min(p2))
                    cnt = 0
                    break
score1 = len(p2)
score2 = len(p1)
print(score1)
print(score2)

Try 1.

틀렸습니다가 뜬 코드입니다. - 코드 길이 864B

import sys
input = sys.stdin.readline
n = int(input())
p1 = list()
p2 = list(range(1, 2*n+1))
for _ in range(n):
    num = int(input())
    p1.append(num)
    p2.remove(num)
p1.sort()
p2.sort()
card = p1[0]
p1.pop(0)
i = 0
turn = 1
while 1:
    if turn == 1 and card < p2[i]:
        card = p2[i]
        p2.pop(i)
        i = 0
        turn = 0
    elif turn == 1 and card >= p2[i]:
        i += 1
        if i >= len(p2):
            turn = 0
            i = 0
            card = p2[0]
    if turn == 0 and card < p1[i]:
        card = p1[i]
        p1.pop(i)
        i = 0
        turn = 1
    elif turn == 0 and card >= p1[i]:
        i += 1
        if i >= len(p1):
            turn = 1
            i = 0
            card = p1[0]
    if len(p1) == 0 or len(p2) == 0:
        score1 = len(p2)
        score2 = len(p1)
        break
print(score1)
print(score2)

후기

와 진짜 기대 안 하고 다시 풀었는데 맞아서 일단 기분이 좋네요 오싯~ 백준 풀맛(야채맛 아님) 나네~~