최대 1 분 소요

문제 1: 거스름돈

프로그래머스 카펫 문제를 풀어보자.

스크린샷 2023-01-24 오후 4 42 35 스크린샷 2023-01-24 오후 4 42 25

처음 생각한 풀이

  1. yellowwidth >= height 조건에 맞춰 순서쌍을 구한다.
  2. isOkay 함수를 통해 1번에서 구한 순서쌍 중에 답이될 수 있는 순서쌍을 구한다.
  3. 2번에서 구한 순서쌍에 +2 씩 더해 답을 구한다.

IMG_0396

def solution(brown, yellow):
    answer = []
    
    for height in range(1, yellow // 2 + 2):
        # 이때 height 는 세로, width 는 가로
        width = yellow // height
        if yellow % height == 0:
            if width >= height: # 가로가 세로보다 크거나 같아야 함
                if isOkay(height, yellow, brown):
                    answer.append(width + 2)
                    answer.append(height + 2)
    return answer

def isOkay(height, yellow, brown):
    width = yellow // height
    if width*2 + height*2 + 4 == brown: # 둘레를 구해 brown 과 값을 비교한다
        return True
    return False

더 간결한 풀이

풀이 방법은 위와 같지만 더 간단하게 구현할 수 있었다.

import math

def solution(brown, yellow):
    for height in range(1, int(math.sqrt(yellow))+1):
        if yellow % height == 0:
            width = yellow // height
            if height*2 + width*2 + 4 == brown:
                return [width+2, height+2]


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기