문제

입력 조건

  • 첫째 줄에 0과 1로만 이루어진 문자열 S가 주어진다. S의 길이는 100만보다 작다.

출력 조건

  • 첫째 줄에 다솜이가 해야 하는 행동의 최소 횟수를 출력한다.

Test Case

// 입력 예시 1
0001100
// 출력 예시 1
1

// 입력 예시 2
00000001
// 출력 예시 2
1

// 입력 예시 3
11001100110011000001
// 출력 예시 3
4

접근

  • 같은 숫자가 연속되어 반복되면 한 뭉텅이로 생각하고, 숫자가 바뀌는 순간 카운팅을 해야한다.
  • 0 → 1로 바뀌는 횟수와 1 → 0으로 바뀌는 횟수를 카운팅하여 두 횟수 중 최솟값을 출력한다.

내 코드

import sys
input = sys.stdin.readline()
s = input.rstrip()
toOne = 0
toZero = 0
for i in range(1, len(s)):
	if s[i] != s[i-1] and s[i-1] == '0':
    	toOne += 1
    elif s[i] != s[i-1] and s[i-1] == '1':
    	toZero += 1
if s[-1] == '0':
	toOne += 1
else:
	toZero += 1
    
print(min(toOne, toZero))
profile
Step by step goes a long way.

0개의 댓글