Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions sodock00/boj/BOJ_14499.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# 14499 주사위 굴리기
import sys
input = sys.stdin.readline

# 주사위가 이동했을 때마다 상단에 쓰여있는 값을 구하기
N, M, ci, cj, K = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(N)]
lst = list(map(int, input().split()))

n1=n2=n3=n4=n5=n6=0
di, dj = [0, 0, 0, -1, 1], [0, 1, -1, 0, 0] # 동서북남
alst = []
for dr in lst:
# [1] 이동 후 범위내이면 처리
ni, nj = ci+di[dr], cj+dj[dr]
if 0<=ni<N and 0<=nj<M:
# [2] 주사위 면 굴리기
if dr==1: # 동
n1,n3,n4,n6 = n4,n1,n6,n3
elif dr==2: # 서
n1,n3,n4,n6 = n3,n6,n1,n4
elif dr==3: # 북
n1,n2,n5,n6 = n5,n1,n6,n2
else: # 남
n1,n2,n5,n6 = n2,n6,n1,n5

# [3] 이동한 바닥판이 0인지 여부에 따라 처리
if arr[ni][nj]==0:
arr[ni][nj]=n6
else:
n6, arr[ni][nj]=arr[ni][nj],0

alst.append(n1) # 윗면의 값을 ans에 추가
ci, cj = ni,nj # 이동처리
print(*alst, sep='\n')
26 changes: 26 additions & 0 deletions sodock00/boj/BOJ_15681.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# 15681
import sys
sys.setrecursionlimit(1000000000)
input = sys.stdin.readline

N,R,Q=map(int,input().split(' '))

m=[[]for _ in range(N+1)]
visit=[-1 for _ in range(N+1)]

for _ in range(N-1):
a,b=map(int,input())
m[a].append(b)
m[b].append(a)

def dfs(now):
global visit
visit[now]=1
for i in m[now]:
if visit[i]==-1:
visit[now]+=dfs(i)
return visit[now]
dfs(R)
for _ in range(Q):
get=int(input())
print(visit[get])