Post

Baekjoon5430 - AC (Python)

백준 사이트 5430 - AC 문제입니다.

이 글을 보시기 전에 문제를 풀기 위해 충분한 생각을 하셨나요? 답을 안 보고 푸는게 최대한 고민하는게 가장 중요하다고 생각합니다.!!

☑️ 1. 문제

https://www.acmicpc.net/problem/5430


☑️ 2. Input , Output


☑️ 3. 분류 및 난이도

solved.ac class 3 문제입니다.


☑️ 4. 생각한 것들

  • 당연하겠지만 ‘R’명령어로 기본 내장라이브러리인 reverse를 호출하는건 바보같은 짓입니다. 시간초과 나겠지요. 그냥 R이 홀수번나왔냐 짝수번 나왔냐 체크만 해주면 됩니다.
  • 나머지는 어렵지 않습니다. 저는 특이하게 deque의 특성을 이용해서 앞 뒤로 자유자재로 빼줬습니다.
  • 이 문제는 오답률이 굉장히 높은데, 문제에 적혀있지 않은.. 여러 입출력 문제들 때문에 사람들이 곤욕을 치룬것 같습니다.
  • 무조건 D명령어에 대해서만 ‘error’를 발생시켜야합니다. 즉 빈 배열이라해도 R명령어를 하면 []를 출력해야합니다.
  • 그리고 Python은 list를 그대로 출력하면 숫자사이에 공백에 붙습니다. 이렇게도 출력하면 안되고 공백들을 제거한 상태로 출력해야합니다.
  • 이것저것 추가하다보니 더티코드가 되었습니다.

5. code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from collections import deque
from sys import stdin


def solution() -> None:
    t_case = int(stdin.readline())
    for _ in range(t_case):
        func = stdin.readline().rstrip('\n')
        size = int(stdin.readline().rstrip('\n'))
        data_list = stdin.readline().rstrip('\n').strip("[]")
        if data_list:
            data_list = deque(map(int, data_list.split(',')))
        # cnt == True -> R이 짝수번
        cnt = True
        error = False
        for i in range(len(func)):
            if func[i] == 'R':
                cnt = not cnt
            else:
                if cnt:
                    if data_list:
                        data_list.popleft()
                    else:
                        print('error')
                        error = not error
                        break
                else:
                    if data_list:
                        data_list.pop()
                    else:
                        print('error')
                        error = not error
                        break
        if not error:
            if cnt:
                print('[' + ','.join(map(str, data_list)) + ']')
            else:
                print('[' + ','.join(map(str, list(reversed(data_list)))) + ']')


solution()




6. 후기

c++로 작성이 필요하거나 도움이 필요하시면 댓글을 작성해주세요.!! 기록용이라 설명이 자세하지 않습니다.

This post is licensed under CC BY 4.0 by the author.