문제풀이/프로그래머스
프로그래머스 | 카펫 문제 풀이
soo-dal
2023. 12. 29. 17:01
문제 접근 방식
노랑 카펫의 가로, 세로를 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