백준 10845번과 매우 유사한 문제. 세부 조건만 잘 따져주면 쉽게 해결 가능하다.
나의 풀이
n,*l=open(0)
a=[]
for i in l:
if (cmd:=(q:=i.split())[0]) == 'push': a.append(q[1])
elif cmd == 'pop': print(a.pop(0) if a else -1)
elif cmd == 'size': print(len(a))
elif cmd == 'empty': print(0 if a else 1)
elif cmd == 'front': print(a[0] if a else -1)
elif cmd == 'back': print(a[-1] if a else -1)
고수의 풀이
s=[];p=print
for o in [*open(0)][1:]:
match o[1]:
case "u":s.append(o.split()[1])
case "o":p(s.pop(0)if s else-1)
case "i":p(len(s))
case "m":p(0 if s else 1)
case "r":p(s[0]if s else-1)
case "a":p(s[-1]if s else-1)
CODE REVIEW
match-case문
을 처음 봤는데 case을 나누고 해당하는 case마다 코드를 실행하는 방식이다. if else 조건문과 비슷하지만 코드가 한결 간단해진다.- 처음에는
input()
이용해서 풀었는데 시간초과 뜨길래 open(0)으로 받는 방식으로 바꾸었다. 백준은 이런 시간 초과 문제가 은근 신경쓰이게 한단 말이지…ㅂㅇㅂ - 이번에도 바다코끼리 연산자를 편리하게 이용했다. 다음에 한번 이 연산자에 대한 포스팅을 올려봐야겠다.