[Python] 프로그래머스 lv2 - 카펫
2023. 5. 18. 09:50ㆍ알고리즘/문제풀이
[Python] 프로그래머스 lv2 - 카펫
코딩테스트 연습 - 카펫 | 프로그래머스 스쿨 (programmers.co.kr)
풀이방법
- 문제에서 원하는 답
- 해당 타일로 이루어진 카펫의 가로, 세로 길이
- 이때 가로 > 세로
- 문제의 경우 노란 타일을 갈색 타일이 감싸고 있는 형식
- 노란 타일 + 2를 해야 각각의 가로, 세로 길이가 나온다
- 두 개의 식을 연립해서 연립방정식으로 풀이
- 가로 + 세로 = 갈색 - 2
- 가로 * 세로 = 노란색 개수
- 의사코드
- 노란색의 약수 리스트 구하기
- 노란색의 약수로 만들어진 리스트 탐색 - for 반복문
- 탐색을 진행하면서 만약 두 개의 연립방정식을 만족하면 break
- 이때 연립 방정식은 노란색 타일을 기준으로 풀이가 됨
- 문제에서 요구하는 답은 가로, 세로의 길이이기에 연립방정식 답에 + 2를 해서 answer에 넣어주기
- 가로의 길이 > 세로의 길이 → sort로 내림차순 정렬 시행
풀이코드
def solution(brown, yellow):
answer = []
key = [i for i in range(1,yellow//2+1) if yellow%i == 0]
key.append(yellow)
for i in range(len(key)):
x,y = i,len(key)-i-1
if key[x]+key[y] == brown/2-2 and key[x]*key[y]== yellow:
answer.append(key[x]+2)
answer.append(key[y]+2)
break
return sorted(answer, reverse = True)
'알고리즘 > 문제풀이' 카테고리의 다른 글
[Python] 프로그래머스 lv1 - 모의고사 (0) | 2023.05.20 |
---|---|
[Python] 프로그래머스 lv1 - 콜라 문제 (1) | 2023.05.19 |
[Python] 프로그래머스 lv1 - 삼총사 (1) | 2023.01.26 |
[Python] 프로그래머스 lv1 - 과일장수 (0) | 2023.01.12 |
[Python] 프로그래머스 lv1 - 푸드 파이터 대회 (0) | 2023.01.10 |