[실버 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'
이 글은
본 저작자 표시, 비영리 규칙 하에 배포할 수 있습니다. 자세한 내용은 Creative Commons 라이선스를 확인하세요.
Creative Commons
본 저작자 표시
비영리
'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
댓글을 사용할 수 없습니다.