티스토리 뷰
이 문제는 날 너무 힘들게 한 문제다.
몇번이나 고치고 고친지 모르겠다. 끝에가 2이므로 그 끝점을 찾아서 올라가는 방식이다.
오른쪽/왼쪽으로 갈 수 있는 곳까지 계속가고 위로올라가면서 제일 위에있는 즉 0행에 있는 열의 값을 구하면 되는 문제이다.
T = 10
for tc in range(1,T+1):
N = int(input())
arr = []
for i in range(100):
arr.append(list(map(int, input().split())))
#배열 값 받음
#끝에 2가 있는 점 찾아줌
end = 0
for i in range(100):
if arr[99][i] == 2:
end = i
break
x = 99
y = end
#1.기본은 위로 직진 x -= 1
#2.좌.우를 만난다면 방향 틀어 좌.우로 직진
#3.0을 만난다면 위로 직진
#4.행이 0이라면 열값을 출력
flag = False
while x > 0 :
flag = False
if y+1 < 100 and arr[x][y+1] == 1: #만약 y+1이 범위를 넘어가지 않고, 오른쪽으로 갔을 때 1이 존재한다면
while True:
y += 1 #오른쪽으로 이동
if y+1 < 100 and arr[x][y+1] == 1:
continue
else:
x -= 1 #오른쪽으로 가고 바로 넘어가면 왼쪽을 봤을때 1이 있으므로 오른쪽으로 갔다가 왼쪽으로 가는 무한루프에 걸림
#그래서 오른쪽으로 가지 않는다면 break를 주기 전에 위로 올라가게한다
flag = True
break
if y-1 >= 0 and arr[x][y-1] == 1: #왼쪽
while True:
y -= 1
if y-1 >= 0 and arr[x][y-1] == 1: # 계속 왼쪽으로 직진
continue
else:
# elif arr[x][y - 1] == 0 or y - 1 == -1 :
x -= 1
flag = True
break
if flag == False:
x -= 1 #위쪽
print('#{} {}'.format(tc,y))
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] 1974. 스도쿠검증 (0) | 2021.02.20 |
---|---|
[SWEA] 2001.파리퇴치 (0) | 2021.02.20 |
[SWEA] 1979.어디에 단어가 들어갈 수 있을까 (0) | 2021.02.19 |
[SWEA] 4843. 특별한정렬 (0) | 2021.02.16 |
[SWEA] 4839. 이진탐색 (0) | 2021.02.16 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- AWS
- N과M
- 트리
- DOM
- commit되돌리기
- Pyhton
- vue
- 파이썬
- Java
- 자바
- django
- SSAFY
- javascript
- 배포
- 프로그래머스
- 싸피
- 알고리즘
- SSAFY퇴소
- SWEA
- 안드로이드스튜디오
- vue.js
- 세션 스토리지
- git
- splide
- 비동기패턴
- 백준
- 위클리챌린지2주차
- SQL
- 독학
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함