|
" 문제 "
" 아이디어 "
0과 1이 끊어지는 구간을 세어서 더 적은 구간의 개수를 출력하면 된다.
예를 들어 0001100 의 경우
000 / 11 / 00 으로 나눌 수 있고,
11 부분만 뒤집으면 되기 때문에 답은 '1' 이다.
또다른 예로 0100011010 의 경우
0 / 1 / 000 / 11 / 0 / 1 / 0 이므로
0 의 구간은 4개, 1의 구간은 3개 이므로
3번만 뒤집으면 된다.
" 코드 "
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
s = input()
l = len(s)
temp = s[0]
zero = one = 0
if s[0] == '0':
zero += 1
else:
one += 1
for i in range(l):
if s[i] != temp:
if temp == '0':
one += 1
temp = s[i]
else:
zero += 1
temp = s[i]
print(min(zero, one))
|
cs |
" 참고자료 "
반응형
'알고리즘 > Baekjoon' 카테고리의 다른 글
[ Baekjoon : python ] 백준 11404번 플로이드 - 플로이드 워셜 알고리즘 (Floyd WarshAlgorithm) (0) | 2021.05.12 |
---|---|
[ Baekjoon : python ] 백준 18406번 럭키 스트레이트 - 구현 (시뮬레이션) (0) | 2021.04.03 |
[ Baekjoon : python ] 백준 15990번 1, 2, 3 더하기 5 - 다이나믹프로그래밍 (0) | 2021.02.23 |
[ Baekjoon : python ] 백준 11052번 카드 구매하기 - 다이나믹프로그래밍 (0) | 2021.02.21 |
[ Baekjoon : python ] 백준 9095번 1, 2, 3 더하기 - 다이나믹프로그래밍 (0) | 2021.02.20 |