[연습문제][python]덱-중급

2024. 9. 30. 19:03·코딩테스트/기타 문제

문제

1부터 N까지 수가 쓰여져 있는 N장의 카드 더미가 주어집니다. 이 카드 더미에서 맨 위 또는 맨 아래에 있는 카드를 내려놓는 것을 반복해서, 1부터 N까지 차례대로 내려놓을 수 있는지 알려주는 프로그램을 작성해 주세요.

#입력
5
1 4 3 5 2

#출력
NO

 

#입력 
5
1 4 5 3 2

#출력
YES

 

카드 더미에서 맨 위 또는 맨 아래에 있는 카드를 내려놓는 것을 반복해서, 1이 쓰여있는 카드부터 N이 쓰여 있는 카드까지 차례대로 내려놓을 수 있으면 YES, 그렇지 않으면 NO를 출력

 


[python]문제풀이

 

1부터 N까지 순서대로 놓아야한다. 

ex) N=5 일때, 카드 더미가 1,2,3,4,5 로 나열될 수 있는지.

 

맨 앞과 맨뒤가 1인지 체크

-> 맞으면 카드 더미 맨 앞 카드 삭제-> 맨 앞과 맨뒤 카드가 2인지 체크 -> 맞으면 또 앞에 카드 삭제 , 틀리면 NO-> 반복

-> 틀리면 -> print('NO')

 

 

from collections import deque

#카드개수
N=int(input()) 
#카드 더미
cards = list(map(int,input().split()))

#덱
dq = deque(cards)
#1부터 순서대로 체크
chk =1

while dq:
    if dq[0]==chk:#카드 더미 맨 앞 카드 숫자 체크
        dq.popleft() #맨 앞 카드 제거
        chk +=1
    elif dq[-1]==chk: #카드 더미 맨 뒤 카드 숫자 체크
        dq.pop() #맨 뒤 카드 제거
        chk +=1 #다음 숫자체크하기
    else:
        print('NO')
        break #NO 출력 후 루프 종료
        
else:
    print('YES')

#결과 출력

 


+) 참고 : 덱

 

[자료구조][python]덱(deque)

덱(Deque, Double-Ended Queue)-양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조 = 스택 + 큐 특징- O(1) 시간 복잡도: 덱의 양쪽 끝에서 삽입과 삭제가 이루어지기 때문에, 이 연산들은 상수 시간 복잡도

tildacoding.tistory.com

 

'코딩테스트 > 기타 문제' 카테고리의 다른 글

[연습문제][python]최대공약수  (1) 2024.10.07
'코딩테스트/기타 문제' 카테고리의 다른 글
  • [연습문제][python]최대공약수
#코딩 공부
#코딩 공부
tildacoding 코딩 공부
  • #코딩 공부
    tildacoding
    #코딩 공부
  • 전체
    오늘
    어제
  • 글쓰기 관리자
  • Personal

    • 홈
    • 태그
    • 방명록
  • link

    • GITHUB
    • 분류 전체보기 (51)
      • Dev (12)
        • python (0)
        • 웹크롤링 (2)
        • 머신러닝 (3)
        • 딥러닝 (4)
        • 언어지능 딥러닝 (2)
        • SQL (1)
        • Spring (0)
      • 코딩테스트 (16)
        • 백준 (3)
        • 프로그래머스 (7)
        • 기타 문제 (2)
        • 코딩테스트를 위한 정리 (4)
      • Study (4)
        • 알고리즘 (2)
        • 자료구조 (2)
      • 대외활동 (18)
        • 에이블스쿨 (18)
        • 공모전 (0)
  • 공지사항

    • 루틴 skrrrrr
  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
#코딩 공부
[연습문제][python]덱-중급
상단으로

티스토리툴바