파이썬 알고리즘 222번 | [백준 18115번] 카드 놓기 - 자료 구조,덱

Yunny.Log ·2022년 8월 3일
0

Algorithm

목록 보기
227/318
post-thumbnail

222. 카드 놓기

1) 어떤 전략(알고리즘)으로 해결?

자료 구조,덱

2) 코딩 설명

<내 풀이>

# 1. 제일 위의 카드 1장을 바닥에 내려놓는다.
# 2. 위에서 두 번째 카드를 바닥에 내려놓는다. 
카드가 2장 이상일 때만 쓸 수 있다.
# 3. 제일 밑에 있는 카드를 바닥에 내려놓는다. 
카드가 2장 이상일 때만 쓸 수 있다.

from collections import deque
import sys
n = int(sys.stdin.readline().rstrip())
lis = list(map(int,sys.stdin.readline().rstrip().split()))
# lis.sort(reverse=True)
# 위에서부터 1 2 3 4 5 6 ...

newarr = deque()
for i in range(n,0,-1) : 
    # print(newarr,lis[i-1],i)
    if lis[i-1]==1 :
        newarr.appendleft(n+1-i)
    elif lis[i-1]==2 : 
        #newarr[1]=i
        if len(newarr)==1 : 
            newarr.append(n+1-i)
        elif len(newarr)>=2 :
            newarr.insert(1,n+1-i)
    else : 
        newarr.append(n+1-i)
for n in newarr : print(n, end=" ")

<반성 점>

  • 두번째 카드를 넣는 것을 생각 미처 못했었어

<배운 점>

  • 추가로 여기에 15652 도 정리할게

  • 그것은 바로 중복조합 문제지

  • 중복조합은 combinations_with_replacement(lis, m)

0개의 댓글