Programmers/programmers
[프로그래머스] 파이썬//반복문 구조 파악.
딸기뚜왈기
2023. 12. 11. 16:21
while을 써야 할 것 같다고 생각하면서도,
아래와 같은 코드로 테스트 케이스를 통과하니
정답 코드를 작성한 것 같았다.
def solution(arr):
a = len(arr[0])
b = len(arr)
if a < b :
for i in arr:
i.append(0)
elif a > b:
for i in range(a-b):
arr.append([0]*(a))
else:
return arr
return arr
반례가 있었다.
# 반례
# 입력값 > [[1, 1], [1, 1], [1, 1], [1, 1]]
# # 기댓값 > [[1, 1, 0, 0], [1, 1, 0, 0], [1, 1, 0, 0], [1, 1, 0, 0]
start = 1
while a < b and start <= b-a :
for i in arr:
i.append(0)
start += 1
--> 반례를 통과하지 못함.
while a < b and start <= b-a : 이 코드 줄 때문인 줄 알고,
while a < b:
if start <= b-a :
for i in arr:
i.append(0)
start += 1
으로 바꿈.
바보같다. 똑같은 결과.
print(start) 찍어봄.
첫번째 테스트 케이스에서, 2,3,4,5 다 찍히네.
이러면 안되는데...
반복문 안의 start += 1 의 위치가 잘못됨 감지.
def solution(arr):
a = len(arr[0])
b = len(arr)
start = 1
while a < b and start <= b-a :
for i in arr:
i.append(0)
start += 1
else:
for i in range(a-b):
arr.append([0]*(a))
return arr
아직도 반복문 들여쓰기 구조에 미숙하구나.
def solution(arr):
a = len(arr[0])
b = len(arr)
start = 1
while a < b and start <= b-a:
for i in arr: i.append(0)
start += 1
else:
for i in range(a-b): arr.append([0]*(a))
return arr
While 안쓴 풀이
def solution(arr):
a=len(arr)
b=len(arr[0])
if a>b:
for i in range(a):
for j in range(a-b):
arr[i].append(0)
else:
for i in range(b-a):
arr.append([0]*b)
return arr