[백준/파이썬] 1439번

민정·2023년 12월 16일
0

[백준/파이썬]

목록 보기
186/245
post-thumbnail

📍백준 1439번 문제

https://www.acmicpc.net/problem/1439

코드

n = list(input())
cnt = 1
temp1 = []
temp2 = []

for i in range(1, len(n)):
    if n[i] != n[i-1]:
        if n[i] == '0':  # 앞 0 현재 1
            temp1.append(cnt)
            cnt = 1
        else:
            temp2.append(cnt)
            cnt = 1  # 앞 1 현재 0
    else:
        cnt += 1
if n[-1] == '1':
    temp1.append(cnt)
else:
    temp2.append(cnt)

print(min(len(temp1), len(temp2)))

풀이

0,1이 연속되는 구간의 개수를 구해서 더 작은 값을 출력해주면 된다.
연속되는 구간을 구하는 경우의 수가 3개인데,
1. 현재 값과 이전 값이 같을 때
2. 현재 값 - 0, 이전 값 - 1 인 경우
3. 현재 값 - 1, 이전 값 - 0 인 경우
로 나누어서 풀었다.
(1) 인 경우, cnt 값을 1 더해주었고 (2)와 (3)의 경우 각각의 배열에 연속되어진 0 또는 1의 개수의 값을 추가해주었다.
이렇게 반복문을 해서 풀어주면 마지막값과 (마지막-1)의 값 비교는 할 수 없으므로 따로 해주어 배열에 더해주었다.

profile
パㅔバ6ㅇr 덤벼ㄹΓ :-0

0개의 댓글