SW/알고리즘

파이썬 : 프로그래머스 : 타일 장식물 : 풀이

얇은생각 2019. 9. 22. 07:30
반응형

풀이

def solution(N):    
    if N == 1:
        return 4
    elif N == 2:
        return 6
    
    tile_list = [1, 1]
    for i in range(2, N):
        tile_list.append( tile_list[i-2] + tile_list[i-1])
    
    tile_list.pop(0)
    
    answer = 4
    for i in tile_list:
        answer += i * 2
        
    return answer

 

 

실행 결과

정확성 테스트

테스트 1 통과 (0.04ms, 10.7MB)
테스트 2 통과 (0.03ms, 10.7MB)
테스트 3 통과 (0.04ms, 10.7MB)
테스트 4 통과 (0.04ms, 10.7MB)
테스트 5 통과 (0.04ms, 10.7MB)
테스트 6 통과 (0.04ms, 10.8MB)
테스트 7 통과 (0.04ms, 10.8MB)
테스트 8 통과 (0.04ms, 10.7MB)

효율성 테스트

테스트 1 통과 (0.05ms, 10.7MB)
테스트 2 통과 (0.08ms, 10.7MB)
테스트 3 통과 (0.05ms, 10.8MB)
테스트 4 통과 (0.06ms, 10.7MB)

채점 결과

정확성: 66.7

효율성: 33.3

합계: 100.0 / 100.0

 

 

 

총평

우선 1과 2의 경우는 바로 리턴을 해주었습니다. 정사각형의 크기의 경우, 앞에 두 사각형의 변의 크기를 더한 값이므로, 해당 값을 구해서 리스트에 더해줍니다. 그 다음, 해당 값의 둘레를 구하기 위해서는 앞에 값들에 곱하기 2씩 해주어서 문제를 해결하였습니다. 저는 포문을 2번 활용해서 문제를 해결하였지만, 한번에 해결할 수 있는 방법도 있습니다. 다행히 효율성 테스트를 통과하여서 큰 무리없이 문제를 해결했지만, 가능한 연산을 줄이려는 노력은 꾸준히 고려해보아야 할 것 같습니다.

반응형