Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 공학수학
- 삼성SW역량테스트
- 공업수학
- kreyszig
- Problem set 2.7
- 문제풀이
- vocabulary
- English
- Conversation
- homogeneous
- Nonhomogeneous ODEs
- 영어회화
- Homogeneous ODEs
- ODEs
- 미분방정식
- Python
- SW역량테스트
- 공수1
- Problem set 1.5
- Ode
- 맛집
- 공수 문제풀이
- Problem Set 1.4
- 백준
- 미방
- 대학
- 비제차 상미분 방정식
- 코딩테스트
- 공수
- Advanced Engineering Mathematics
Archives
- Today
- Total
한걸음
[221006] SWEA 5650 : 핀볼게임 본문
반응형
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRF8s6ezEDFAUo
1. 해당 문제는?
전형적인 시뮬레이션 문제
2. 전체 코드
메모리 : 68636 KB, 시간 : 779 ms, 풀이 시간 : 39분
def block(block_num, d):
if block_num == 1 :
ref_d = [3, 2, 0, 1]
if block_num == 2 :
ref_d = [2, 0, 3, 1]
if block_num == 3 :
ref_d = [2, 3, 1, 0]
if block_num == 4 :
ref_d = [1, 3, 0, 2]
if block_num == 5 :
ref_d = [2, 3, 0, 1]
return ref_d[d]
def wormhole(hole_num, x, y):
[x1, y1], [x2, y2] = h_info[hole_num]
if [x, y] == [x1, y1] :
return x2, y2
if [x, y] == [x2, y2] :
return x1, y1
def move(x, y, sx, sy, d):
global result
cnt = 0
while True :
x += dx[d]
y += dy[d]
if [x, y] == [sx, sy] : break
if x < 0 or x >= N or y < 0 or y >= N :
d = block(5, d)
cnt += 1
continue
if 0 <= x < N and 0 <= y < N :
if 1 <= board[x][y] <= 5 :
d = block(board[x][y], d)
cnt += 1
continue
if 6 <= board[x][y] <= 10 :
x, y = wormhole(board[x][y], x, y)
continue
if board[x][y] == -1 :
break
result = max(result, cnt)
def solve():
for i in range(N):
for j in range(N):
if board[i][j] == 0 :
for direction in range(4):
move(i, j, i, j, direction)
T = int(input())
for tc in range(T):
N = int(input())
board = [list(map(int, input().split())) for _ in range(N)]
h_info = {6 : [], 7 : [], 8 : [], 9 : [], 10 : []}
result = 0
for i in range(N):
for j in range(N):
if 6 <= board[i][j] <= 10 :
h_info[board[i][j]].append([i, j])
# 하, 좌, 상, 우
dx = [1, 0, -1, 0]
dy = [0, -1, 0, 1]
solve()
print('#{}'.format(str(tc+1) + ' ' + str(result)))
반응형
'Coding Test' 카테고리의 다른 글
[221010] 백준 16236 : 아기 상어 (0) | 2022.10.10 |
---|---|
[221009] 백준 17142 : 연구소 3 (0) | 2022.10.09 |
[221005] 백준 17837 : 새로운 게임 2 (1) | 2022.10.05 |
[221004] 백준 19327 : 어른 상어 (0) | 2022.10.04 |
[221003] 백준 2573 : 빙산 (0) | 2022.10.03 |