[Python] 5430 - AC

2025. 5. 24. 21:33·Coding-Test/백준
728x90
반응형

[Gold V] AC - 5430

[문제 링크](https://www.acmicpc.net/problem/5430) 

🗝️알고리즘 분류

  • 문자열
  • 자료구조
  • 덱

💻문제 정의

정수 배열이 주어졌을 때, R(뒤집기)와 D(버리기) 연산을 수행하는 프로그램을 작성하시오.

 

💡접근 및 설계

주어진 함수를 나누어 하나 씩 수행하도록 한다. R 함수와 D 함수를 각각 구현한 뒤, 입력받은 정수 배열에 적용한다.

R(뒤집기) 함수에 대해서, R의 횟수가 짝수일 경우 처음의 모양과 같게 될 것이다. 그렇기에 R이 나올때 마다 뒤집는 것이 아닌, R이 나온 횟수가 홀수인 경우에 대해서만 R 함수를 실행하도록 하였다.

 

✏️알고리즘 풀이

is_Null = False
rev = 0

for cmd in func:
    if (cmd == "R"):
        rev += 1
    elif (cmd == "D"):
        if Q:
            if (rev % 2 != 0):
                Q.pop()
            else:
                Q.popleft()
        else:
            print("error")
            is_Null = True
            break

D 함수는 첫 번째 수를 버리는 함수이다. 즉, R이 나온 후 D를 수행한다고 했을 때, R이 나온 횟수가 짝수면 처음 모습 그대로 일 것이고 처음의 수열에서 popleft()를 수행하게 될 것이다. R이 나온 횟수가 홀수이면 뒤집어진 상태에서 수열의 첫번째 수가 버려질 것이니 처음의 수열에서 pop()을 수행한 것과 결과가 같을 것이다.

 

if (rev % 2 != 0):
    Q.reverse()
    print("[" + ",".join(Q) + "]")
else:
    print("[" + ",".join(Q) + "]")

이후 R이 나온 횟수에 따라 출력을 한다.

 

🗒️제출 코드

# 5430 AC

import sys
from collections import deque
input = sys.stdin.readline

T = int(input())

for _ in range(T):
    func = input().rstrip()
    num = int(input())
    arr = input().rstrip()
    
    Q = deque(arr[1:-1].split(","))

    if (num == 0):
        Q = deque()

    is_Null = False
    rev = 0

    for cmd in func:
        if (cmd == "R"):
            rev += 1
        elif (cmd == "D"):
            if Q:
                if (rev % 2 != 0):
                    Q.pop()
                else:
                    Q.popleft()
            else:
                print("error")
                is_Null = True
                break

    if not is_Null:
        if (rev % 2 != 0):
            Q.reverse()
            print("[" + ",".join(Q) + "]")
        else:
            print("[" + ",".join(Q) + "]")

💭오늘의 회고

입력 처리가 까다로웠던 문제였다.

덱에 수를 저장하고 R, D 명령을 구현하는 것은 문제 없었으나, 입력, 출력 조건을 처리하는게 더 힘들었던 것 같다...

 

기본기를 다시 한 번 다져야 할 시간인갑다.

728x90
반응형
저작자표시 (새창열림)

'Coding-Test > 백준' 카테고리의 다른 글

[Python] 7662 - 이중 우선순위 큐  (0) 2025.06.27
[Python] 10026 - 적록색약  (2) 2025.05.28
[Python] 11286 - 절댓값 힙  (0) 2025.05.24
[Python] 7576 - 토마토  (0) 2025.05.24
[Python] 12015 - 가장 긴 증가하는 수열 2  (0) 2025.05.16
'Coding-Test/백준' 카테고리의 다른 글
  • [Python] 7662 - 이중 우선순위 큐
  • [Python] 10026 - 적록색약
  • [Python] 11286 - 절댓값 힙
  • [Python] 7576 - 토마토
희완
희완
희완한 코딩일상
    반응형
  • 희완
    Code-Heewan
    희완
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Python
        • 가상환경
      • Algorithm
      • Coding-Test
        • 백준
        • 프로그래머스
        • 항해99
      • Data-Analysis
      • 웹 개발
        • django
      • AWS
      • 공모전
      • Mobile
  • 링크

    • Github
  • 300x250
  • hELLO· Designed By정상우.v4.10.3
희완
[Python] 5430 - AC
상단으로

티스토리툴바