[실버 4] 백준 2980 - 도로와 신호등 (파이썬)
글 작성자: pental
https://www.acmicpc.net/problem/2980
풀이
- 길이 L인 도로 위에 N개의 신호등이 있음
- 각 신호등은 D(거리), R(빨간불 지속 시간), G(초록불 지속 시간)의 정보를 가짐
- 차량은 초당 1m 이동
- 빨간불이면 정지, 초록불이면 통과
- 도로의 끝까지 도달하는 데 걸리는 시간 출력
사실 이부분에서 계속 오류가 나서 봤더니 “)” 위치가 왜 뒤로 가 있던건지,, 하,,
N, L = map(int, input().split())
info = [list(map(int, input().split())) for _ in range(N)]
N, L, info는 각각 신호등의 개수, 도로 길이, 각 신호등의 위치 D, 빨간불 R, 초록불 G를 저장한다.
state = ['R'] * N
remain = [info[i][1] for i in range(N)]
state는 각 신호등의 현재 상태를 나타내고, 처음은 모두 빨간불로 시작한다.
remain의 경우 해당 신호등의 남은 시간을 나타낸다.
pos = 0
for i in range(100000):
if pos == L:
print(i)
break
차량의 위치 pos가 L에 도달하면 종료하고 걸린 시간 i를 출력한다.
stop = False
for j in range(N):
if info[j][0] == pos:
if state[j] == 'R':
stop = True
break
현재 위치에 신호등이 있다면, 그 신호등이 빨간불이면 stop = True로 설정한다.
if not stop:
pos += 1
빨간불이 아니면 1m 전진한다.
for j in range(N):
remain[j] -= 1
if remain[j] == 0:
remain[j] = info[j][1] if state[j] == 'G' else info[j][2]
state[j] = 'R' if state[j] == 'G' else 'G'
모든 신호등의 remain이 감소하고, 신호등 주기가 끝나면 상태를 전환하고 새로운 지속 시간으로 초기화 한다.
코드
# 백준 2980 - 도로와 신호등
# 분류 : 구현
N, L = map(int, input().split())
info = [list(map(int, input().split())) for _ in range(N)]
state = ['R'] * N
remain = [info[i][1] for i in range(N)]
pos = 0
for i in range(100000) :
if pos == L :
print(i)
break
stop = False
for j in range(N) :
if info[j][0] == pos :
if state[j] == 'R' :
stop = True
break
if not stop :
pos += 1
for j in range(N) :
remain[j] -= 1
if remain[j] == 0 :
remain[j] = info[j][1] if state[j] == 'G' else info[j][2]
state[j] = 'R' if state[j] == 'G' else 'G'
'Programming > 백준' 카테고리의 다른 글
[골드 5] 백준 12919 - A와 B 2 (파이썬) (0) | 2025.04.26 |
---|---|
[골드 2] 백준 2381 - 최대 거리 (파이썬) (0) | 2025.04.25 |
[골드 3] 백준 16437 - 양 구출 작전 (파이썬) (0) | 2025.04.24 |
[골드 1] 백준 2213 - 트리의 독립집합 (파이썬) (0) | 2025.04.24 |
[실버 4] 백준 11508 - 2+1 세일 (파이썬) (0) | 2025.04.24 |
댓글
이 글 공유하기
다른 글
-
[골드 5] 백준 12919 - A와 B 2 (파이썬)
[골드 5] 백준 12919 - A와 B 2 (파이썬)
2025.04.26 -
[골드 2] 백준 2381 - 최대 거리 (파이썬)
[골드 2] 백준 2381 - 최대 거리 (파이썬)
2025.04.25 -
[골드 3] 백준 16437 - 양 구출 작전 (파이썬)
[골드 3] 백준 16437 - 양 구출 작전 (파이썬)
2025.04.24 -
[골드 1] 백준 2213 - 트리의 독립집합 (파이썬)
[골드 1] 백준 2213 - 트리의 독립집합 (파이썬)
2025.04.24