[SWEA] 1289. 원재의 메모리 복구하기

야금야금 공부·2023년 5월 9일
0

백준

목록 보기
37/52

1289. 원재의 메모리 복구하기


문제 풀이

t = int(input())

for i in range(1, t + 1):

    n = list(input())   # 원래값
    l = len(n)
    
    start = ['0'] * l    # n의 길이만큼 초기화: 초기값
    cnt = zero_idx = 0

    while n != start:
		
        # 0 뒤에서 1을 만난 곳부터 l까지 1
        idx = n.index('1', zero_idx, l)
        cnt += 1
        for a in range(idx, l):
            start[a] = '1'

        if n == start:
            break
		
        # 1 뒤에 0이 있는 곳부터 l까지 0 
        zero_idx = n.index('0', idx, l)
        cnt += 1
        for a in range(zero_idx, l):
            start[a] = '0'

    print(f"#{i} {cnt}")

다른 정답 코드

  • 원래값과 초기값이 같지 않다면, 그 위치 i부터 끝까지 같지 않은 값으로 변경한다.
T = int(input())
for tc in range(1, T + 1):
    
    init = list(input())   # 원래값
    n = ['0'] * len(init)  # 초기값
    cnt = 0
    
    for i in range(len(n)):
        if n[i] != init[i]:  # 원래값과 초기값이 같지 않은 부분부터 같지 않은 값을 넣음
            n[i:] = init[i] * len(n[i:])
            cnt += 1

    print('#{} {}'.format(tc, cnt))


참고 블로그

0개의 댓글