백준 5430 AC 파이썬 풀이

2021. 12. 23. 22:09·카테고리 없음
728x90

크흡...! 첫시도는 시간초과 떴다 ㅋㅋㅋㅋ

#5430 AC
import sys

T = int(input())
for _ in range(T):
    command = sys.stdin.readline().rstrip()
    n = int(sys.stdin.readline())
    array = sys.stdin.readline().rstrip()[1:-1].split(",")
    flag = 0
    for cur in command:
        if cur == 'R':
            if len(array) == 0:
                flag = 1
                print('error')
                break
            array.reverse()
        else: # 'D'
            if len(array) == 0:
                flag = 1
                print('error')
                break
            array.pop(0)
    if flag == 0:
        print("["+",".join(array)+"]")

아 뭐가 문젠가 생각했는데 제한시간 1초면 아무래도 냅다 reverse()함수를 쓰면 안될거같다... 언제 뒤집고 그러는가..!! 
R의 갯수가 홀수일때랑 짝수일때 나눠서 R이짝수이면 reverse()안쓰고 바로 그냥 출력하고 

R의 개수가 홀수이면 reverse()된 (뒤집어진) 배열을 출력해주면 될거같다 

 

#5430 AC
import sys


T = int(input())
for _ in range(T):
    command = sys.stdin.readline().rstrip()
    n = int(sys.stdin.readline())
    array = sys.stdin.readline().rstrip()[1:-1].split(",")
    flag = 0
    count = 0
    for cur in command:
        if cur == 'R':
            count += 1
        else: # 'D'
            if len(array) < 1:
                flag = 1
                print('error')
                break
            array.pop(0)
    if flag == 0:
        if count%2 == 0:
            print("["+",".join(array)+"]")
        else:
            array.reverse()
            print("[" + ",".join(array) + "]")

그렇지만 이 코드로도 시간초과를 받았다 ㅋㅋㅋ 

간과한 점은 reverse되어야 할 때인지 아닐때인지를 D 명령이 나올 때에도 해주어야 한다는 것이다 !! 그래야 queue가 있으면 pop()을 할지 popleft()를 할지 알 수 있다. 

또한 n 이 0일때의 예외처리도 해주어야 한다. 왜 예외처리를 해주어야 하는걸까 ? 

array = sys.stdin.readline().rstrip()[1:-1].split(",")

여기서 []가 input일때 말이 안되기는 하는데.. 이런 경우 직접 찍어보면

 

잘찍히는것 같은데..? 라고 생각했으나

print(len(queue))

를 하면 queue의 길이가 1이라고 나온다 그러면 배열이 [] 이고 D명령이 나오는 경우를 처리할 수 없다.  --> 문제에서는 4번째 예시 

아하ㅏ 그래서 queue = []라고 초기화를 다시해주나보다..

#5430 AC
import sys
from collections import deque

T = int(input())
for _ in range(T):
    command = sys.stdin.readline().rstrip()
    n = int(sys.stdin.readline())
    array = sys.stdin.readline().rstrip()[1:-1].split(",")
    queue = deque(array) # list -> queue type
    flag = 0
    count = 0

    if n == 0:
        queue = []

    for cur in command:
        if cur == 'R':
            count += 1
        elif cur == 'D':
            if len(queue) < 1:
                flag = 1
                print("error")
                break
            else:
                if count % 2 == 0:
                    queue.popleft()
                else:
                    queue.pop()
    if flag == 0:
        if count%2 == 0:
            print("["+",".join(queue)+"]")
        else:
            queue.reverse()
            print("[" + ",".join(queue) + "]")
728x90
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • linux
  • 백준
  • AWS
  • ansible
  • 데이터엔지니어
  • 프로그래머스
  • docker
  • Kubernetes
  • 코딩테스트
  • EC2
  • 운영체제
  • Databricks
  • Leetcode
  • 데이터브릭스
  • 빅데이터
  • 쿠버네티스
  • 리눅스
  • dp
  • 파이썬
  • 스파크
  • python
  • dfs
  • 카카오코딩테스트
  • SPARK
  • Swift
  • 데이터엔지니어링
  • 클라우드
  • 알고리즘
  • 백트래킹
  • BFS

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
백준 5430 AC 파이썬 풀이
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.