[백준] 13417 - 카드 문자열 (python 파이썬)

강민수·2022년 12월 9일

Algorithm-BACKJOON

목록 보기
1/55
post-thumbnail

수도코드
1. 카드들을 입력받은 후 문자열을 정렬한다. -> 문제점은 카드를 놓을 때 뽑는 순서가 있어서 전체에서 정렬하는것이랑은 다르다
2. 파이썬에서 제공하는 deque를 이용한다. -> 양방향에서 데이터를 처리할 수 있는 queue형 자료구조다
3. 먼저 첫번째 값을 저장한 후 기준으로 지정해놓고 다음 값들을 비교하면서 왼쪽에 놓을지 오른쪽에 놓을지 지정한다
4. 카드들을 마지막으로 출력해준다 -> 그냥 출력하면 원하는대로 문자열만 나오지 않아서 찾아보니 (''.join())을 사용한다..


문제링크


from collections import deque

T = int(input())  # 테스트 케이스의 개수
for _ in range(T):
    N = int(input())  # 카드의 개수
    card = list(map(str, input().split()))  # 각 카드들의 문자열을 입력받는다
    d = deque()  # 파이썬에서 제공하는 덱 생성
    d.append(card[0])  # 처음 입력받는 값은 저장
    std = card[0]  # 비교하기 위해 기준이 되는 대상 지정

    for i in range(1, len(card)):
        if std >= card[i]:
            d.appendleft(card[i])  # 기준보다 작은 값이 입력되면 기준값의 왼쪽에 놓는다
            std = card[i]  # 기준은 계속해서 변한다
        else:
            d.append(card[i])

    print(''.join(d))
세요
profile
능동적으로 개발 지식을 찾아다니는 백엔드 개발자입니다 😊 작성된 글에 대한 질문들 및 피드백은 언제나 환영입니다 :) 👌

0개의 댓글