728x90
반응형
문자열 뒤집기
난이도 : 下 풀이 시간 : 20분
시간 제한 : 2초 메모리 제한 : 128 MB
해답
s = input()
allzero, allone = 0, 0
for i in range(len(s)-1):
if s[i] != s[i+1]:
if s[i+1] == '1':
allzero = allzero + 1
else:
allone = allone + 1
print(min(allzero, allone))
예시
data = input()
count0 = 0 # 전부 0으로 바꾸는 경우
count1 = 0 # 전부 1로 바꾸는 경우
# 첫 번째 원소에 대해서 처리
if data[0] == '1':
count0 += 1
else:
count1 += 1
# 두 번째 원소부터 모든 원소를 확인하며
for i in range(len(data) - 1):
if data[i] != data[i + 1]:
# 다음 수에서 1로 바뀌는 경우
if data[i + 1] == '1':
count0 += 1
# 다음 수에서 0으로 바뀌는 경우
else:
count1 += 1
print(min(count0, count1))
해설
전부 0으로 바꾸는 allzero와 전부 1로 바꾸는 allone 두 가지의 경우 중 더 적은 횟수를 가지는 경우를 계산하면 됩니다.
728x90
반응형
'알고리즘 (Python) > 이것이 코딩 테스트다 with 파이썬' 카테고리의 다른 글
[그리디 알고리즘] 볼링공 고르기 - 파이썬(python) (0) | 2021.08.09 |
---|---|
[그리디 알고리즘] 만들 수 없는 금액 - 파이썬(python) (0) | 2021.08.04 |
[그리디 알고리즘] 곱하기 혹은 더하기 - 파이썬(python) (0) | 2021.07.27 |
[그리디 알고리즘] 모험가 길드 - 파이썬(python) (0) | 2021.07.26 |
[그래프 이론 알고리즘] 커리큘럼 - 파이썬(python) (0) | 2021.07.20 |