[COS Pro python 1급] 모의고사 8번

2023. 3. 9. 20:38자격증/COS Pro 1급 Python

D-10

 

모의고사 8번. 꽃 피우기

문제 설명

정사각형 크기 격자 모양 정원에 칸마다 핀 꽃 또는 피지 않은 꽃을 심었습니다. 이 정원의 꽃이 모두 피는 데 며칠이 걸리는지 알고 싶습니다. 핀 꽃은 하루가 지나면 앞, 뒤, 양옆 네 방향에 있는 꽃을 피웁니다.

현재 정원의 상태를 담은 2차원 리스트 garden이 주어졌을 때, 모든 꽃이 피는데 며칠이 걸리는지 return 하도록 solution 함수를 작성해주세요.


매개변수 설명

현재 정원 상태를 담은 2차원 리스트 garden이 solution 함수의 매개변수로 주어집니다.

  • 정원의 한 변의 길이는 2 이상 100 이하입니다.
  • 정원 상태를 담은 2차원 리스트 garden의 원소는 0 또는 1 입니다.
  • 이미 핀 꽃은 1로 아직 피지 않은 꽃은 0으로 표현합니다.
  • 정원에 최소 꽃 한 개는 피어 있습니다.
# 다음과 같이 import를 사용할 수 있습니다.
# import math
def sm(list):
    sum=0
    for i in range(len(list)):
        for k in range(len(list)):
            sum+=list[i][k]
    return sum

def solution(garden):
    # 여기에 코드를 작성해주세요.
    answer = 0
    su=sm(garden)
    while sm(garden) != len(garden)**len(garden):
        new = [[0 for c in range(len(garden))] for r in range(len(garden))]
        for i in range(len(garden)):
            for k in range(len(garden)):
                if garden[i][k]==1:
                    new[i][k]=1
                    if i==0 and k==0:
                        new[i][k+1]=1
                        new[i+1][k]=1
                    elif i==0 and k==len(garden)-1:
                        new[i+1][k]=1
                        new[i][k-1]=1
                    elif i==len(garden)-1 and k==0:
                        new[i-1][k]=1
                        new[i][k+1]=1
                    elif i==len(garden)-1 and k ==len(garden)-1:
                        new[i-1][k]=1
                        new[i][k-1]=1
                    elif i==0 and 0<k<len(garden)-1:
                        new[i][k-1]=1
                        new[i][k+1]=1
                        new[i+1][k]=1
                    elif 0<i<len(garden)-1 and k==0:
                        new[i][k+1]=1
                        new[i-1][k]=1
                        new[i+1][k]=1
                    elif i==len(garden)-1 and 0<k<len(garden)-1:
                        new[i][k-1]=1
                        new[i][k+1]=1
                        new[i-1][k]=1
                    elif 0<i<len(garden)-1 and k==len(garden)-1:
                        new[i][k-1]=1
                        new[i-1][k]=1
                        new[i+1][k]=1
                    else:
                        new[i][k-1]=1
                        new[i][k+1]=1
                        new[i-1][k]=1
                        new[i+1][k]=1
                else:
                    new[i][k]=0
    
        garden=new
        answer+=1
        
                    
        
    return answer

# 아래는 테스트케이스 출력을 해보기 위한 코드입니다.
garden1 = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
ret1 = solution(garden1)

# [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은", ret1, "입니다.")

garden2 = [[1, 1], [1, 1]]
ret2 = solution(garden2)

# [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은", ret2, "입니다.")

오류가 나지도 않고 계속 실행만 됨.

garden2는 잘 실행됨.

순서대로 if 문에서 처리함.

 

 

 

 

 

 

 

 

하드코딩으로 했는데 왜 안되지......화나네....

 

https://blog.naver.com/namucoding_pohang/222317624209

다른 분의 풀이.. 이해는 되는데 그래서 내 코드에서는 뭐가 잘못된건지 모르겠다. 으악