본문 바로가기
Algorithm/Python

[프로그래머스] Level2 - 멀쩡한 사각형

by laheee 2021. 5. 14.

내 풀이

# 정사각형일경우 > 사용 못하는 정사각형의 갯수 : 가로숫자
# 직사각형일경우 > 사용 못하는 정사각형의 갯수 : 가로나 세로 중 작은 숫자 * 2

def solution(w,h):
    answer = 1
    rect = w*h
    cantuse = 0
    if(w == h):
        cantuse = w
        answer = rect - cantuse
    elif(w < h):
        cantuse = w*2
        answer = rect - cantuse
    elif(w > h):
        cantuse = h*2
        answer = rect - cantuse
    return answer
cs

결과

테스트케이스18개 중 5개만 통과했다ㅠ

이렇게 단순하게 접근하는게 아니였고,

입력받은 w, h의 최대공약수를 활용해야하는 문제였다..

 


다른사람 풀이

 

제일 명쾌한 해답이 있어서 참고하였다.

 

https://leedakyeong.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%A9%80%EC%A9%A1%ED%95%9C-%EC%82%AC%EA%B0%81%ED%98%95-in-python

 

[프로그래머스] 멀쩡한 사각형 in python

파이썬으로 프로그래머스 풀기 :: 멀쩡한 사각형 문제 설명 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며

leedakyeong.tistory.com

 

소스

import math
def solution(w,h):
    answer = 1
    return w*- (w+h-math.gcd(w,h))
cs

결과

 

** import math로 gcd(최대공약수)를 활용하니 정확성은 물론 특히 시간이 매우 적게 걸렸다!

 

라이브러리 공부를 좀 더 열심히 해야겠다 ㅜㅅㅜ

댓글