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 | 31 |
Tags
- 플로이드 와샬
- 다익스트라
- 로봇 청소기
- 구현
- 2018 KAKAO BLIND RECRUITMENT
- 백트래킹
- 우선순위큐
- 파이썬
- 2019 KAKAO BLIND RECRUITMENT
- 조합
- SWEA
- 2020 카카오 인턴십
- 스택
- 브루트포스
- 투포인터
- 시뮬레이션
- Spring
- 최소 신장 트리
- 프로그래머스
- 크루스칼
- 플로이드와샬
- GIT
- 비트마스킹
- 투 포인터
- 이분탐색
- 2020 KAKAO BLIND RECRUITMENT
- 2021 KAKAO BLIND RECRUITMENT
- BFS
- 트라이
- 백준
Archives
- Today
- Total
개발조아
[SWEA] 1210 [S/W 문제해결 기본] 2일차 - Ladder1 파이썬 본문
728x90
문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14ABYKADACFAYh
목적지에서 출발하여 위로 올라가면서 맨 윗줄에 도달했을 때의 y 좌표를 출력하면 된다.
올라가면서 좌우 확인하고 다리가 있다면 그 방향으로 0이 나올때 까지 쭉 확인하고 다시 위로 올라가면 된다.
dx = [0, -1, 0]
dy = [-1, 0, 1]
def solv(t):
global board
input()
board = [list(map(int, input().split())) for _ in range(100)]
sx = 99
sy = board[99].index(2)
print('#%d %d'%(t, simul(sx,sy)))
def simul(x,y):
while x != 0:
d = check_side(x,y)
if d in [0,2]:
x,y = move_side(x,y,d)
else:
x += dx[d]
y += dy[d]
return y
def move_side(x,y,d):
while 0 <= y <= 99 and board[x][y] == 1:
y += dy[d]
y -= dy[d]
x -= 1
return x,y
def check_side(x,y):
if y not in [0,99]:
if board[x][y+1] == 1:
return 2
elif board[x][y-1] == 1:
return 0
else:
return 1
elif y == 0 and board[x][y+1] == 1:
return 2
elif y == 99 and board[x][y-1] == 1:
return 0
else:
return 1
for t in range(1,11):
solv(t)
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] 3752 가능한 시험 점수 파이썬 (0) | 2021.08.11 |
---|---|
[SWEA] 2819 격자판의 숫자 이어 붙이기 파이썬 (0) | 2021.08.11 |
[SWEA] 1226 [S/W 문제해결 기본] 7일차 - 미로1 파이썬 (0) | 2021.08.11 |
[SWEA] 1249 [S/W 문제해결 응용] 4일차 - 보급로 파이썬 (0) | 2021.08.11 |
[SWEA] 4112 이상한 피라미드 탐험 파이썬 (0) | 2021.08.10 |
Comments