티스토리 뷰
반응형
문제의 저작권은 SW Expert Academy에 있습니다.
처음 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
32
|
TC = int(input())
for tc in range(1, TC+1):
K, N, M = map(int, input().split())
data = list(map(int, input().split())) + [N+K, N+K]
#N 종점 K 이동가능 M 정류장 개수
here = 0 #내위치
i = 0 #정류장위치
cnt = 0 #기름 넣을때 마다 +1
while here + K < N :
if here+K >= data[i+2]:
here = data[i + 2]
cnt += 1
i += 3
continue
elif here+K >= data[i+1]:
here = data[i + 1]
cnt += 1
i += 2
continue
elif here+K < data[i]:
cnt = 0
break
else:
here = data[i]
cnt += 1
i += 1
print("#%d %d"%(tc, cnt))
|
cs |
|
|
처음 풀 땐 굉장히 어렵게 느껴졌던 문제. 초반에 풀이를 찾아봤지만, 이해가 안되서 최대한 쉽게 풀어썼다.
해설
기본적인 풀이는 내 현재위치에서 더한 값을 다음에 갈 주유소의 위치와 비교하면서 풀었다
혹시나 break 모르는 사람이 있을 수 있으니 간단히 설명하면
break를 만나면 조건문이 아닌 반복문을 그만하고 다음 으로 간다. 위의 경우는 while문을 나온다
continue를 만나면 반복문 안에서 그 다음부분을 안하고, 다시 반복문 위로 올라간다.
while here + K < N :
버스의 현재위치(here)와 이동가능한 수(K)의 합이 마지막 정류장을 넘긴다면 while을 멈춘다.
if here+K >= data[i+2]:
원래는 이부분 빼고 제출했는데 testcase가 10개중 8개만 맞아서 추가 한 내용.
현재의 버스 위치에서 다음다음다음 주유소로 갈 수있는 경우를 추가 한 것이다.
(사실 완전검색하려면 for문 추가... 해야 하지만 초보자들은 아직 몰라도 된다)
elif here+K >= data[i+1]:
/현재 버스의 위치가 다음 다음 주유소에 갈 수 있으면
here = data[i + 1]
/버스의 위치를 다음 다음 정류소로 바꾸고
cnt += 1 바꾸고정류소 들린 횟수를 +1하고 i에도 +2를 한다
elif here+K < data[i]:
다음 정류장까지 못가면 break
else:
그외의 정상적으로 다음정류장으로 가는 부분을 이렇게 적었다.
반응형
'알고리즘 > sw' 카테고리의 다른 글
4837. [파이썬 S/W 문제해결 기본] 2일차 - 부분집합의 합 (0) | 2020.03.26 |
---|---|
4836. [파이썬 S/W 문제해결 기본] 2일차 - 색칠하기_python (0) | 2020.03.25 |
[파이썬 S/W 문제해결 기본] LIST1 - 구간합 _ python (0) | 2020.03.25 |
[파이썬 S/W 문제해결 기본] LIST1 - 숫자 카드 _ python (0) | 2020.03.25 |
[파이썬 S/W 문제해결 기본] LIST1 - min max _ python (0) | 2020.03.25 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- mongoDB
- 클라우데라
- Vue
- nodejs
- Queue
- django
- read_csv
- JavaScript
- useHistory 안됨
- Deque
- 자연어처리
- typescript
- BFS
- Python
- 자료구조
- DFS
- login
- react autoFocus
- vuejs
- Express
- UserCreationForm
- TensorFlow
- logout
- nextjs autoFocus
- NextJS
- react
- useState
- error:0308010C:digital envelope routines::unsupported
- pandas
- next.config.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함