๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง

๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง 2022.04.05.ํ™”

by DevIseo 2022. 4. 6.

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]}')

๋Œ“๊ธ€