방명록
- [알고리즘][파이썬] 백준_10845_큐2022년 01월 03일 17시 25분 53초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
"10845번: 큐" 파이썬 풀이
https://www.acmicpc.net/problem/10845
명령어를 구현하고 N개의 명령어 입력으로 큐를 조작해야 한다.
주의할 점은 출력은 명령어를 입력할 때마다 한 줄씩 출력되어야 한다.
예제 출력 1과 같은 형태로 단번에 모든 값이 출력되면 안된다.
이 부분을 오해해 "틀렸습니다"를 경험했다.
출력 값 누적 후 한번에 출력(틀렸습니다ㅠ)
# 출력 값 누적 후 한번에 출력(결과: 틀렸습니다) import sys N = int(sys.stdin.readline()) ipt = [] for _ in range(N): ipt.append(sys.stdin.readline().strip()) q = [] for i in ipt: if i.count(' ') == 1: q.append(i[-1]) elif i == 'pop': if q: print(q.pop(0)) else: print('-1') elif i == 'size': if q: print(len(q)) else: print(0) elif i == 'empty': if q: print(0) else: print(1) elif i == 'front': if q: print(q[0]) else: print(-1) elif i == 'back': if q: print(q[-1]) else: print(-1)
명령어 입력에 대한 출력 값을 명령어를 조작하는 for 문이 끝나면 출력되도록 하였다.
이러한 출력 형태는 문제에서 요구하는 것이 아니었다.
# 입력과 출력 결과 15 push 1 push 2 front back size empty pop pop pop size empty pop push 3 empty front # 이상 입력 값, 아래는 출력 값 1 2 2 0 1 2 -1 0 1 -1 0 3
명령어 입력할 때마다 한 줄씩 출력(맞았습니다!)
# 하나의 명령어가 주어질 때마다 한 줄씩 출력(결과: 맞았습니다!) import sys N = int(sys.stdin.readline()) q = [] for _ in range(N): cmd = sys.stdin.readline().split() # 빈칸으로 명령어와 값이 구분되는 경우에는 split을 이용해 리스트를 만드는 것이 효과적이었다. if cmd[0] == 'push': q.append(cmd[-1]) elif cmd[0] == 'pop': if q: print(q.pop(0)) # pop은 특정 주소의 값을 pop할 수 있다. else: print('-1') elif cmd[0] == 'size': if q: print(len(q)) else: print(0) elif cmd[0] == 'empty': if q: print(0) else: print(1) elif cmd[0] == 'front': if q: print(q[0]) else: print(-1) elif cmd[0] == 'back': if q: print(q[-1]) else: print(-1)
문제에서 원하는 것은 다음과 같은 입력과 출력이었다.
# 입력과 출력 결과 15 # 입력 push 1 # 입력 push 2 # 입력 front # 입력 1 # 출력 back # 입력 2 # 출력 size # 입력 2 # 출력 empty # 입력 0 # 출력 pop # 입력 1 # 출력 pop # 입력 2 # 출력 pop # 입력 -1 # 출력 size # 입력 0 # 출력 empty # 입력 1 # 출력 pop # 입력 -1 # 출력 push 3 empty # 입력 0 # 출력 front # 입력 3 # 출력
"push 1"과 같이 명령어(push)와 값(1)이 함께 입력되는 경우,
split()을 이용해 리스트로 만들어 주소 0, 1(명령어, 값)을 이용하는 방법이 간편했다.
pop()는 pop(0)과 같이 특정 주소의 값을 pop할 수 있어 이 문제를 풀때 편리했다.
728x90반응형'CS > 코딩 테스트' 카테고리의 다른 글
[알고리즘][파이썬] 백준_10866_덱 (0) 2022.01.09 [알고리즘][파이썬] 백준_1158_요세푸스 문제 (0) 2022.01.05 [알고리즘][파이썬] 백준_1406_에디터 (0) 2022.01.01 [알고리즘][파이썬] 백준_1874_스택 수열 (0) 2021.12.30 [알고리즘][파이썬] 백준_9093_단어 뒤집기 (0) 2021.12.28 다음글이 없습니다.이전글이 없습니다.댓글