본문 바로가기

코딩테스트/SWEA

[Python, 파이썬] SWEA 1289. 원재의 메모리 복구하기

메모리를 한 번 변경할 때 해당 비트부터 끝까지 덮어 씌워질때,
메모리의 초기화 상태(모든 비트가 0)에서 원래 상태로 복원하기 위해
최소한 몇 번의 비트 수정이 필요한지를 계산하는 문제.

 
T = int(input()) # 테스트케이스의 개수 T

for test_case in range(1, T+1):
    original = input().strip() # 원본 메모리
    reset = '0'*len(original) # 수정중인 초기화된 비트
    diff = 0 # 변경 횟수

    for i in range(len(original)):

        if(reset[i] != original[i]): # 같지 않으면
            reset = reset[:i] # 이전 문자
            new = original[i]*(len(original)-i) # 메모리 끝까지 덮어씌워지는 새로운 문자

            reset = reset+new # 업뎃된 메모리
        
            diff += 1

    print("#%d %d" %(test_case, diff))
 
 


[문제풀이]


이게 D3인가 싶을 정도로 아주 간단한 문제.

원본 메모리랑 수정중인 메모리를 비교한다.

reset = reset[:i] # 이전 문자
new = original[i]*(len(original)-i) # 메모리 끝까지 덮어씌워지는 새로운 문자
 

같지 않으면 수정중인 메모리의 이전 비트까지와 덮어씌워진 비트를 결합해서 새로 업뎃하고 count한다.

이렇게 끝까지 확인해서 변경된 횟수를 세면 끝난다.