🕵️♂️ [문제]
[input]
3
3 10 5
1 3 5 7 9
3 10 5
1 3 7 8 9
5 20 5
4 7 9 14 17
[output]
#1 3
#2 0
#3 4
[복습 1]
import sys
sys.stdin = open("input.txt")
T = int(input())
for tc in range(1, T+1):
# K : 최대 이동 가능 수
# N : 종점
# M : 충전기 정류장 수
K, N, M = map(int,input().split())
# charge : 충전기 위치
charge = list(map(int,input().split()))
# bus_stop : 충전기 위치를 표시해줌
bus_stop = [0]*(N+1)
# 충전기가 있으면 1 없으면 0으로 표시해줌
for i in charge:
bus_stop[i] += 1
cnt = 0
bus = 0
while True:
bus += K
if bus >= N:
break
# 이 부분을 생각해주지 못하여 틀렸다
# 만약 bus위치를 넣어주었을 때
for j in range(bus, bus-K, -1):
# 1이 있다면 cnt 1개 올려주고 for문을 빠져나와서
# while문 바로 아래의 bus += K 로 돌아감
if bus_stop[j]:
cnt+=1
bus = j
break
else:
cnt = 0
break
print("#{} {}".format(tc, cnt))
[풀이 2]
import sys
sys.stdin = open('input.txt')
T = int(input())
for tc in range(1, T+1):
energy, last_busstop, charge = map(int,input().split())
charge_list = list(map(int,input().split()))
bus_stop = [0 for _ in range(last_busstop)]
# bus_stop에 충전기 표시해줌
for i in charge_list:
bus_stop[i] = 1
bus = 0
cnt = 0
while True :
bus += energy
if bus >= last_busstop:
break
if bus_stop[bus] == 0:
for i in range(bus, bus-energy, -1):
if bus_stop[i] == 1:
bus = i
cnt += 1
break
else:
cnt = 0
break
# else구문을 적어주었기 때문에 아래 구문이 필요없어졌다.
# if bus_stop.index(1) > energy:
# cnt = 0
# break
else:
cnt+=1
print("#{} {}".format(tc, cnt))
🍦 [복습]
# 1. 210218
복습완료
# 2. 210223
복습완료... 그치만 여전히 while문은 어색하고 어렵다.
왜 if bus >= N 을 for문 아래로 빼면 오류가 나는걸까?
# 3. 210307
복습완료.
[풀이 2] 만든날.
🥩 list 메서드, .index()
a = [1, 2, 3, 1]
a.index(1)
# 1이 존재하는 첫 번째 인덱스를 반환
# 따라서, 0이 출력된다.
'# 3. APS > SWEA' 카테고리의 다른 글
SWEA # Python_D2_1989_초심자의 회문 검사 ✅ (0) | 2021.02.20 |
---|---|
SWEA # Python_D2_1288_새로운 불면증 치료법 (0) | 2021.02.20 |
SWEA # Python_D2_1986_지그재그 숫자 ✅ (0) | 2021.02.18 |
SWEA # Python_D2_4835_구간합 ✅ (0) | 2021.02.18 |
SWEA # Python_D2_4834_숫자 카드 ✅ (0) | 2021.02.17 |