0405 Today I Learn
์ค๋์ Aํ ๋๋น๋ฅผ ์ํด SWEA๋ฅผ ํ์๋๋ฐ, ๋๋ ๋์ ํ ๋ชจ๋ฅด๊ฒ ๋ค ์ถ์ด์ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ค์ ์ค๊ณ๋ฅผ ํด๋ณด๋ฉฐ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ํ์ตํ๋ค. ์๋ฎฌ๋ ์ด์ ์ด๋ ๊ตฌํํ๋๊ฒ ์์ง๋ ๋๋ฌด ์ด๋ ต๋ค... ๋ฒฝ๋ ๊นจ๊ธฐ๋ผ๋ ๋ฌธ์ ๋ ์์ง ์ค๋ฅ๋ฅผ ์ก์ง ๋ชปํ๋๋ฐ.... ๋๋ฒ๊น ํด์ ์ผ๋ฅธ ์๋ฒฝํ ์ฝ๋๋ก ๋ง๋ค์ด์ผ๊ฒ ๋ค.
#๋์ ํธ ์นดํ!
def TOUR(n,cy,cx,visit,cnt):
global sy,sx, answer
if n>3:#์ข
๋ฃ์กฐ๊ฑด
return
#level์ด 3์ด๊ณ , ํ์ฌ ์ขํ๊ฐ ๋ค์ ์์๊ฐ์ผ๋ก ์์๋
if n == 3 and cy==sy and cx==sx and answer<cnt: #answer ๊ฐฑ์ ํ๊ธฐ
answer=cnt
return
for k in range(n,n+2): #๋ฐฉํฅ n:์ ์ง(์ง์ง),n+1(ํ์ ) #ํธ๋ฆฌ!
ny,nx = cy+dy[k], cx+dx[k]
if 0<=ny<N and 0<=nx<N and arr[ny][nx] not in visit:
TOUR(k,ny,nx,visit+[arr[ny][nx]],cnt+1)
dy,dx=(1,1,-1,-1,1),(-1,1,1,-1,-1) #๋ง๋ฆ๋ชจ ๋ชจ์์ผ๋ก ๋์๊ฐ
T = int(input())
for tc in range(1,T+1):
N = int(input())
arr=[list(map(int,input().split())) for _ in range(N)]
answer=-1 #๋ชป๊ฐ๋ฉด -1๋ก returnํ๋๊น
for sy in range(0,N-2): #์์ y์ขํ 0๋ฒ ์ธ๋ฑ์ค๋ถํฐ ์์ํ๋๋ฐ, direct๋ฐฐ์ด๋ก ์ํํ๊ธฐ๋๋ฌธ์ ์ฌ๊ธฐ๊น์ง๋ง ํ์ํด๋ ๋จ
for sx in range(1,N-1): #๋ง๋ฆ๋ชจ๊ธฐ ๋๋ฌธ์ 1๋ถํฐ ์์, n-1๊น์ง๋ง ํด๋ ๋จ!
TOUR(0,sy,sx,[],0) #level,์์y,์์x,visit๋ฐฐ์ด,cnt
print(f'#{tc} {answer}')
#ํ์ฃผ๋ฒ ๊ฒ๊ฑฐ
#pipe์ ๋ฐฉํฅ ์ธ์ ํ๋ ฌ
pipe = [
[0,0,0,0], #์ ํ ์ข ์ฐ
[1,1,1,1],
[1,1,0,0],
[0,0,1,1],
[1,0,0,1],
[0,1,0,1],
[0,1,1,0],
[1,0,1,0]
]
#pipe์ direct
dy,dx=(-1,1,0,0),(0,0,-1,1) #์ ํ ์ข ์ฐ
#๊ทธ๋ค์ pipe์ direct index
opp = [1,0,3,2] #pipe์(0)-opp(1), ํ(1)-opp(0) ์ข(2)-opp(3), ์ฐ(3)-opp(2)
def bfs(N,M,cy,cx,L): #ํ, ์ด, ํ์ฌy,ํ์ฌx, ์ ํ์๊ฐ
q=[] #q์์ฑํ์ผ๋๊น visit๋ฐฐ์ด ์์ฑ
visit = [[0]*M for _ in range(N)]
q.append((cy,cx))
visit[cy][cx]=1 #๋ฐฉ๋ฌธ ํ์!
cnt=1 #์ฅ์์ ๊ฐ์ cnt!
while q:
cy,cx=q.pop(0)
#์ข
๋ฃ์กฐ๊ฑด!
if visit[cy][cx]==L: #์์์๊ฐ ๋๋ฌ
return cnt
for i in range(4):
ny,nx=dy[i]+cy,dx[i]+cx
#๋ฐฐ์ด ๋ฒ์ ๋ฐ ์ค๋ณต์ฒดํฌ์ ํ์ดํ ์ฐ๊ฒฐ ์ ๋ฌด!(ํ์ฌ ํ์ดํ์ ๊ทธ๋ค์ ํ์ดํ ๋น๊ต!)
if 0<=ny<N and 0<=nx<M and visit[ny][nx]==0 and pipe[arr[cy][cx]][i] and pipe[arr[ny][nx]][opp[i]]: #arr์ ์์๊ฐ pipe๋ฒํธ!
q.append((ny,nx))
visit[ny][nx]=visit[cy][cx]+1 #์์์๊ฐ ์ฒดํฌ๋ฅผ ์ํด +1ํด์ฃผ๊ธฐ
cnt+=1
return cnt
T=int(input())
for tc in range(1,T+1):
N,M,R,C,L=map(int,input().split())
arr=[list(map(int,input().split())) for _ in range(N)]
answer=bfs(N,M,R,C,L)
print(f'#{tc} {answer}')
T=int(input())
for tc in range(1,T+1):
day,mon,mon3,year = map(int,input().split())
arr=[0]+list(map(int,input().split()))
cost=[0]*13
for i in range(1,13):
Min = cost[i-1]+arr[i]*day # ์ผ๊ถ #์ด์ ๋ฌ + ์ด๋ฒ๋ฌ
Min = min(Min,cost[i-1]+mon) #1๊ฐ์๊ถ
if i>=3: #3๊ฐ์๊ถ(๋ถ๊ธฐ)
Min=min(Min,cost[i-3]+mon3)
if i>=12: #์ฐ๊ฐ
Min=min(Min,cost[i-12]+year)
cost[i]=Min
print(f'#{tc} {cost[12]}')
'๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.04.08.๊ธ (0) | 2022.04.08 |
---|---|
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.04.06.์ (0) | 2022.04.06 |
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.04.04.์ (0) | 2022.04.04 |
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.03.31.๋ชฉ (0) | 2022.03.31 |
๐๐จ๐๐๐ฒ ๐ ๐๐๐๐ซ๐ง 2022.03.30.์ (0) | 2022.03.30 |
๋๊ธ