https://www.acmicpc.net/problem/10866
from sys import stdin
import collections
N = int(stdin.readline())
deque = collections.deque()
for _ in range(N):
cmd = stdin.readline().split()
if cmd[0] == "push_front":
deque.appendleft(int(cmd[1]))
elif cmd[0] == "push_back":
deque.append(int(cmd[1]))
elif cmd[0] == "pop_front":
if deque:
print(deque.popleft())
else:
print(-1)
elif cmd[0] == "pop_back":
if deque:
print(deque.pop())
else:
print(-1)
elif cmd[0] == "size":
print(len(deque))
elif cmd[0] == "empty":
if deque:
print(0)
else:
print(1)
elif cmd[0] == "front":
if deque:
print(deque[0])
else:
print(-1)
elif cmd[0] == "back":
if deque:
print(deque[-1])
else:
print(-1)
문제 고대로 deque 에 맞는 메소드 사용해서 풀이

https://www.acmicpc.net/problem/10026
from sys import stdin
import sys
sys.setrecursionlimit(10**6)
N = int(stdin.readline())
painting = []
for _ in range(N):
p = list(map(str, stdin.readline().strip()))
painting.append(p)
a, b = 0, 0
def func(i, j, p):
if p == "B" or p == "O":
painting[i][j] = "X"
else:
painting[i][j] = "O"
if i-1 >= 0 and painting[i-1][j] == p:
func(i-1, j, p)
if j-1 >= 0 and painting[i][j-1] == p:
func(i, j-1, p)
if i+1 < N and painting[i+1][j] == p:
func(i+1, j, p)
if j+1 < N and painting[i][j+1] == p:
func(i, j+1, p)
for i in range(N):
for j in range(N):
now = painting[i][j]
if painting[i][j] != "X" and painting[i][j] != "O":
func(i, j, now)
a += 1
if now == "B":
b += 1
for i in range(N):
for j in range(N):
if painting[i][j] == "O":
func(i, j, "O")
b += 1
print(a, b)
painting 에 입력받은 그림의 정보를 모두 저장
이중 for 문을 돌려서 일반 사람은 RGB 를 모두 구분해서 카운팅 하도록 하고
이 때, 확인한 R, G 는 O 로 바꾸고 B 는 X 로 바꿔주었다.
B 는 적록색약인 사람도 구분하기 때문에 b + 1 도 진행
적록색약인 사람은 R, G 를 구분하지 못하므로 같은 것으로 생각해야함
=> 앞에서 이미 둘 다 O 로 바꿔줬기 때문에 O 의 개수만 세면 된다.
