-
[BOJ 1439, Python 3] 뒤집기알고리즘/BOJ 2021. 7. 28. 16:53반응형
https://www.acmicpc.net/problem/1439
풀이
S의 길이가 100만이면 O(N) 이나 O(NlogN)이 최대인 것을 알 수 있다.
그래서 O(N)으로 살펴보면 나오는 방법은 1을 전부 뒤집어서 000000으로 바꾸거나, 0을 전부 뒤집어서 111111로 바꾸면 되는 것을 충분히 추론할 수 있다.
그래서 1을 전부 뒤집을 때 뒤집는 횟수, 0을 전부 뒤집을 때 뒤집는 횟수를 구해 최솟값을 답으로 출력하면 된다.
코드
123456789101112s = input()ans = [0, 0]x = s[0]for i in range(1, len(s)):if x != s[i]:if x == '0': ans[0] += 1else: ans[1] += 1x = s[i]if x == '0': ans[0] += 1else: ans[1] += 1print(min(ans))cs 반응형'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 4796, Python 3] 캠핑 (0) 2021.07.28 [BOJ 1789, Python 3] 수들의 합 (0) 2021.07.28 [BOJ 1343, Python 3] 폴리오미노 (0) 2021.07.28 [BOJ 2828, C++] 사과 담기 게임 (0) 2021.07.27 [BOJ 18238, Python 3] ZOAC 2 (0) 2021.07.27