문제 접근 방식

노랑 카펫의 가로, 세로를 x,y라는 미지수로 표현하고 이를 방정식으로 변환.

x*y = 노랑 카펫 수

2x + 2y + 4 = 갈색 카펫 수

 

한 방정식을 특정 미지수로 정리를 한 후, 미지수에 모든 수를 대입하여 

두 방정식을 만족하는 정수를 구함.

 

처리방식

1. 노랑 카펫의 가로, 세로를 x,y라고 가정하고, y가 될 수 있는 모든 수를 순회한다.

2. 노랑 카펫의 세로 길이에 대한 가로 길이를 구하고, 이를 다른 방정식에 대입한다

3. 대입하여 식이 성립하면 노랑 카펫의 가로, 세로 길이가 된다.

4. 가로 세로에 +2씩 해줘서 전체 가로 세로를 반환한다.

 

 

코드

import math
def solution(brown, yellow):
    answer=[]
    total=brown+yellow
    for y in range(1,int(math.sqrt(total))+1):
        if yellow%y!=0:
            continue
            
        x=yellow//y
        if 2*(x+y)+4==brown:
            answer.append(x+2)
            answer.append(y+2)
            break
        
    return answer

 

 

회고

소요시간 28분.

초기 문제 풀이 진행시에 아래 코드에 대한 예외처리를 해두지 않아서 실패 케이스가 떴음.

확실히 예외 처리해서 오류를 제거해줘야한다..

if yello%y!=0 :
    continue

+ Recent posts