파이썬 백준 1439번
실버 5
https://www.acmicpc.net/problem/1439
문제 보기
분류: 문자열, 그리디 알고리즘
문제 풀기
0 과 1 조합의 숫자들을 리스트에 각각 입력받는다.
숫자들의 맨 앞과 맨 끝의 수가 같은지 확인을 한다. 만약, 같다면 그 반대되는 수를 기준으로 하여 check 에 저장해 둔다. 이때, count 는 0 으로 시작.
숫자들의 맨 앞과 맨 끝의 수가 다르다면, 첫 수와 반대되는 수를 check 에 저장한다. 이때, count 는 1 로 시작.
그리고, 01 문자열 리스트에서 하나씩 빼내어가면 0 에서 1 또는 1 에서 0 으로 전환되는 시점을 temp 에 저장해 두고 check 와 비교하여 다른 경우에만 count 를 하나씩 늘려 나간다.
코드 보기
import sys
inputdata = sys.stdin.readline
def fnFlip():
if s[0] == s[-1]:
check = abs(s[0] - 1)
# print(check) # test print
count = 0
elif s[0] != s[-1]:
check = abs(s[0] - 1)
# print(check) # test print
count = 1
temp = s[0]
for i in range(1, len(s)):
if s[i - 1] != s[i]:
temp = s[i]
if check != s[i]:
count += 1
print(count)
if __name__ == "__main__":
s = list(map(int, inputdata().strip()))
# print(s) # test print
fnFlip()
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 2720 - 세탁소 사장 동혁 (0) | 2022.12.23 |
---|---|
[Python] 백준 풀기 14719 - 빗물 (0) | 2022.12.22 |
[Python] 백준 풀기 11656 - 접미사 배열 (0) | 2022.12.20 |
[Python] 백준 풀기 2748 - 피보나치 수 2 (0) | 2022.12.19 |
[Python] 백준 풀기 1358 - 하키 (0) | 2022.12.18 |