https://www.acmicpc.net/problem/17114
17114번: 하이퍼 토마토
첫 줄에는 문제의 설명에서 창고의 크기를 나타내는 자연수 m, n, o, p, q, r, s, t, u, v, w가 주어진다. 단, 1 ≤ mnopqrstuvw ≤ 106 이다. 둘째 줄부터는 창고에 저장된 토마토들의 정보가 주어진다. 창
www.acmicpc.net
토마토3
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
오기생겨서 1시간은 쓴듯하다.
다 아는 개념이여도, 변수가많아지니 헷갈린다. 변수명 아무렇게나 짓다가 변수겹처서 틀린것도 셀 수 없다.
그냥 재미용
move1=[1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
move2=[0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
move3=[0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
move4=[0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
move5=[0,0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0,0,0]
move6=[0,0,0,0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0,0,0]
move7=[0,0,0,0,0,0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0,0]
move8=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0]
move9=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,0,0,0,0]
move10=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1,0,0]
move11=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-1]
# def bfs(m, n, o, p, q, r, s, t, u, v, w):
def bfs():
while que:
ww,vv,uu,tt,ss,rr,qq,pp,oo,nn,mm,value=que.popleft()
for i in range(22):
mmm= mm+move1[i]
nnn= nn+move2[i]
ooo= oo+move3[i]
ppp= pp+move4[i]
qqq= qq+move5[i]
rrr= rr+move6[i]
sss= ss+move7[i]
ttt= tt+move8[i]
uuu= uu+move9[i]
vvv= vv+move10[i]
www= ww+move11[i]
if 0<=mmm<m and 0<=nnn<n and 0<=ooo<o and 0<=ppp<p and 0<=qqq<q and 0<=rrr<r and \
0<=sss<s and 0<=ttt<t and 0<=uuu<u and 0<=vvv<v and 0<=www<w and\
arr[www][vvv][uuu][ttt][sss][rrr][qqq][ppp][ooo][nnn][mmm] =='0':
que.append([www,vvv,uuu,ttt,sss,rrr,qqq,ppp,ooo,nnn,mmm,value+1])
arr[www][vvv][uuu][ttt][sss][rrr][qqq][ppp][ooo][nnn][mmm]='-1'
for ww in range(w):
for vv in range(v):
for uu in range(u):
for tt in range(t):
for ss in range(s):
for rr in range(r):
for qq in range(q):
for pp in range(p):
for oo in range(o):
for nn in range(n):
for mm in range(m):
if arr[ww][vv][uu][tt][ss][rr][qq][pp][oo][nn][mm]=='0':
print(-1)
return
print(value)
import sys
input=sys.stdin.readline
from collections import deque
m, n, o, p, q, r, s, t, u, v, w=map(int,input().split())
arr=[
[[[[[[[[[list(input().split()) for _ in range(n)
] for _ in range(o)
] for _ in range(p)
] for _ in range(q)
] for _ in range(r)
] for _ in range(s)
] for _ in range(t)
] for _ in range(u)
] for _ in range(v)
] for _ in range(w)
]
que=deque()
for ww in range(w):
for vv in range(v):
for uu in range(u):
for tt in range(t):
for ss in range(s):
for rr in range(r):
for qq in range(q):
for pp in range(p):
for oo in range(o):
for nn in range(n):
for mm in range(m):
# print('test',ww,vv,uu,tt,ss,rr,qq,pp,oo,nn,mm)
if arr[ww][vv][uu][tt][ss][rr][qq][pp][oo][nn][mm]=='1':
que.append([ww,vv,uu,tt,ss,rr,qq,pp,oo,nn,mm,0])
arr[ww][vv][uu][tt][ss][rr][qq][pp][oo][nn][mm]='-1'
bfs()
이렇게짜면 답은 맞지만 파이썬이 견디질 못한다.
pypy로 하면 시간초과를 없앨 수 있다.
근데 ㅆ@발 ㅈ같은거는
나보다 훨씬 짧은코딩으로 훨씬 빠르계 게산하는 ㅁㅊㄴ들이 있다.
코드를 봐도 이해가 안된다.
난평생가도 모를것같다.
나중에 숙련도좀 올리고 한번 시도해봐야겠다. 이러고 잊어버리겠지만
'boj' 카테고리의 다른 글
| 백준 7562 나이트의 이동 (0) | 2022.04.21 |
|---|---|
| 백준 14888 연산자 끼워넣기 (0) | 2022.04.21 |
| 백준 7569 토마토2 (0) | 2022.04.20 |
| 백준 2178 미로 탐색 (0) | 2022.04.19 |
| 백준 2667 단지번호붙이기 (0) | 2022.04.19 |