1439번: 뒤집기
다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모
www.acmicpc.net
<My code>
s = input()
x_count = 0
for i in range(len(s)-1):
if s[i] != s[i+1]:
x_count += 1
result = x_count // 2
if x_count % 2 == 1:
result += 1
print(result)
완전탐색으로 풀기에는 시간복잡도가 너무 커서 규칙을 발견해 그리디하게 풀었다.
앞에서부터 하나씩 문자를 비교해 서로 다를 경우 x_count를 +1 해준다.
x_count가
▶홀수일 때는 (x_count // 2) + 1이 정답이 되고
▶짝수일 때는 x_count // 2 가 정답이 된다.
<Reference Code>
s = input()
count0 = 0
count1 = 1
if s[0] == '1':
count0 += 1
else:
count1 += 1
for i in range(len(s) - 1):
if s[i] != s[i+1]:
if s[i+1] == '1':
count0 += 1
else:
count1 += 1
print(min(count0, count1))
문자열을
▶모두 0으로 바꿨을 때의 개수와
▶모두 1로 바꿨을 때의 개수를 비교해 그 중 작은 값을 결과값으로 하는 풀이다.
'PS > 백준' 카테고리의 다른 글
백준 10539 수빈이와 수열 with Python (0) | 2021.02.08 |
---|---|
백준 1759 암호 만들기 with Python (0) | 2021.02.07 |
백준 5585 거스름돈 with Python (0) | 2021.02.06 |
백준 2606 바이러스 with Python (0) | 2021.02.03 |
백준 1927 최소 힙 with Python (0) | 2021.01.29 |