[SWEA/Python] 1289번. 원재의 메모리 복구하기 (D3)

문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV19AcoKI9sCFAZN

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

풀이

0으로 채워진 문자열과 앞에서부터 한 문자씩 같은지 검사하되 다르다면 뒷부분을 1로 채워버리고 검사를 이어나가는 방식으로 생각하면 된다. (실제로 0으로 채워진 리스트를 만들어서 비교할 필요는 없고 숫자 하나에 기록한다.)

 

 

"0100111"이라고 가정하고 0과 비교를 시작하는 예제

0 -> 0과 비교시 같음

1 -> 0과 비교시 다름, 다음 숫자부터 1과 비교, 정답 1 증가

0 -> 1과 비교시 다름, 다음 숫자부터 0과 비교, 정답 1 증가

0 -> 0과 비교시 같음

1 -> 0과 비교시 다름, 다음 숫자부터 1과 비교, 정답 1 증가

1 -> 1과 비교시 같음

1 -> 1과 비교시 같음

 

 

 

정답 코드

T = int(input())

for i in range(T):
    originMemory = list(map(int, input()))
    answer = 0

    fillBit = 0
    for index, bit in enumerate(originMemory):
        if fillBit == bit:
            continue
        else:
            fillBit = 1 if fillBit==0 else 0
            answer += 1

    print(f"#{i+1} {answer}")