본문 바로가기
Programmers/programmers

[프로그래머스] 파이썬//반복문 구조 파악.

by 딸기뚜왈기 2023. 12. 11.

   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