Search

이차반복5_문제01_같은수합치기

대분류
STEP07 이차반복문
소분류
이차반복문5_문제

영상

문제

''' [문제] [1] a리스트의 값들을 순차적으로 검사한다. [2] 연속으로 같은 값이 두 개가 있다면, [3] 두 수를 삭제하고 그 합을 다시 그 자리에 저장한다. [4] 연속으로 같은 값이 없을 때까지 (1~3)을 반복한다. b = [8,4,2,2,8,4,4] 세번째 자리 2, 2가 연속이다. b = [8,4,4,8,4,4] , 두번째 자리 4, 4가 연속이다. b = [8,8,8,4,4] , 첫번째자리 8, 8 이 연속이다. b = [16,8,4,4] , 세번째자리 4, 4 이 연속이다. b = [16,8,8] , 두번째자리 8, 8 이 연속이다. b = [16,16] , 첫번째자리 16, 16 이 연속이다. b = [32] , 연속된 수가 없다. [정답] b = [32, 0, 0, 0, 0, 0, 0] ''' a = [8,4,2,2,4,4,8] b = [0,0,0,0,0,0,0]
Python
복사

해설

''' [문제] [1] a리스트의 값들을 순차적으로 검사한다. [2] 연속으로 같은 값이 두 개가 있다면, [3] 두 수를 삭제하고 그 합을 다시 그 자리에 저장한다. [4] 연속으로 같은 값이 없을 때까지 (1~3)을 반복한다. b = [8,4,2,2,8,4,4] 세번째 자리 2, 2가 연속이다. b = [8,4,4,8,4,4] , 두번째 자리 4, 4가 연속이다. b = [8,8,8,4,4] , 첫번째자리 8, 8 이 연속이다. b = [16,8,4,4] , 세번째자리 4, 4 이 연속이다. b = [16,8,8] , 두번째자리 8, 8 이 연속이다. b = [16,16] , 첫번째자리 16, 16 이 연속이다. b = [32] , 연속된 수가 없다. [정답] b = [32, 0, 0, 0, 0, 0, 0] ''' a = [8,4,2,2,4,4,8] b = [0,0,0,0,0,0,0] index = 0 b[index] = a[index] i = 1 while i < len(a): if b[index] == a[i]: b[index] = b[index] * 2 while True: check = False for j in range(index): if b[j] == b[j + 1]: b[j] = b[j] * 2 b[j + 1] = 0 check = True index -= 1 if check == False: break else: b[index + 1] = a[i] index += 1 i += 1 print(b)
Python
복사