728x90
반응형
풀기 전 생각해보기😮
- 2022.08.11 - [SSAFY/SWEA] - [SWEA] #1210. Ladder1_파이썬과 유사한 문제
- 이동 가능한 범위에 대해 조건 주의해서 설정하기
- 좌, 우 방향으로만 이동하는 양을 비교해도?
풀이🛫
T = 10
for t in range(T):
testcase = int(input())
arr = [list(map(int, input().split())) for i in range(100)]
# 출발 가능한 인덱스를 구함
startList = []
for i in range(100):
if arr[0][i] == 1:
startList.append(i)
def cntRoute(startRow):
col, row = 0, startRow
cntSide = 0
while col != 99:
# 왼쪽에 길이 있을 때
if 0<=row-1 and arr[col][row-1] == 1:
while 0<=row-1 and arr[col][row-1] == 1:
row -= 1
cntSide += 1
# 오른쪽에 길이 있을 때
elif 100>row+1 and arr[col][row+1] == 1:
while 100>row+1 and arr[col][row+1] == 1:
row += 1
cntSide += 1
# 왼쪽, 오른쪽에 길이 없을 때 아래로 진행
col += 1
return cntSide
# 추가 이동한 만큼의 양을 담는 리스트 생성
cntSideList = []
for i in startList:
cntSideList.append(cntRoute(i))
# cntSideList에서 가장 작은 값을 갖는 인덱스의 시작점 출력
answer = startList[cntSideList.index(min(cntSideList))]
print(f"#{testcase}", answer)
핵심 정리🎁
- Ladder1 문제를 풀었다면, 쉽게 풀 수 있었던 문제다
- 시작점의 이동 경로(움직인 횟수)를 모두 가지고 비교할 필요는 없을 것 같다. 시작점에서 도착점까지 내려오는 열의 개수는 동일하기 때문이다
- 이동경로를 구하는 반복되는 과정에 혼동하지 않도록 함수를 이용했다
링크💎
후기 😎
- 자신감 충전!
'SSAFY > SWEA' 카테고리의 다른 글
[SWEA] 1959. 두 개의 숫자열 (0) | 2022.08.15 |
---|---|
[SWEA] #4831. 전기버스_파이썬 (0) | 2022.08.12 |
[SWEA] #1210. Ladder1_파이썬 (0) | 2022.08.11 |
[SWEA] 1954. 달팽이 숫자_파이썬 (0) | 2022.08.09 |
[SWEA] #11014. 농작물 수확_파이썬 (0) | 2022.08.04 |