Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 32642번 - '당구 좀 치자 제발' (PYTHON 풀이) 본문
문제:

N일과, 각 일자별 날씨가 공백으로 구분되어 주어진다.
처음 비가 오면(1이면) 분노가 1, 그 다음날에도 오면 2(연속되면 1씩 커짐), 그 다음날에도 오면 3, 그 다음날 오지 않으면 2(-1씩 줄어들음)... 이런식으로 분노 증가 및 감소가 1씩 증감할 때 최종적으로 동우의 분노 합을 출력하면 되는 문제이다.
풀이:
N = int(input())
weather = map(int,input().split())
count = 0
angry = 0
for i in weather:
if i == 1:
angry += 1
else:
angry -= 1
count += angry
print(count)
일자와 각 일자의 날씨를 공백으로 입력받는다.
그 후 분노의 합을 계산할 변수와 각 일자에 따른 분노를 변수로 선언한다.
이후에 입력받은 날씨를 하나씩 돌면서 만약 1이면 각 일자의 분노 변수인 angry에 1을 더해주고 그렇지 않으면 1씩 빼주는 코드를 짠다.
이 선별 작업을 거친 다음에는 최종 분노의 합 변수인 count에 angry값을 누적합으로 더해준다.
예를 들어, 입력값이 [1 1 0 0] 이라면 첫번째 1을 봤을 때 i가 1이므로 angry, count가 전부 1이 되고,
두번째 1인 경우도 i가 1이므로, angry가 2, count는 3(원래 1까지 누적합이므로),
세번째 0은 angry를 1씩 줄이므로 angry가 1, count는 4,
마지막 0으로 인해 angry가 0, count는 4 그대로 유지,
최종적으로 4를 출력한다.
이 과정이 문제에서 바라는 로직이므로 정답이다!
'CODING 💻' 카테고리의 다른 글
| 백준 11023번 - '더하기 3' (PYTHON 풀이) (0) | 2026.02.20 |
|---|---|
| 백준 25238번 - '가희와 방어율 무시' (PYTHON 풀이) (0) | 2026.02.19 |
| 백준 30957번 - '빅데이터 vs 정보보호 vs 인공지능' (PYTHON 풀이) (0) | 2026.02.17 |
| 백준 32297번 - '문자열을 만들어요' (PYTHON 풀이) (0) | 2026.02.16 |
| 백준 1789번 - '수들의 합' (PYTHON 풀이) (0) | 2026.02.15 |
