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
'Programmers > programmers' 카테고리의 다른 글
[프로그래머스]로그인 성공? 파이썬 // 왈러스 연산자 , 변수초기화의 중요성. (0) | 2023.12.11 |
---|---|
[프로그래머스]직사각형 넓이 구하기 파이썬 // 2차원 배열 sorted (0) | 2023.12.11 |
[프로그래머스]수열과 구간 쿼리2 파이썬//break vs continue (1) | 2023.12.10 |
[프로그래머스]문자열 여러번 뒤집기 // mutable, immutable의 특성 활용하기. (0) | 2023.12.10 |
[프로그래머스]함수 두개 사용하기. (0) | 2023.12.10 |