https://programmers.co.kr/learn/courses/30/lessons/42842
약수를 이용해 모두 탐색하는 문제입니다.
우선 문제부터 간단하게 요약해보면,
위의 그림과 같이 가운데는 노란색 그리고 가장 바깥쪽 테두리 한줄만 갈색인 카펫이 있습니다. 이 때, 노란색 블록의 수와 갈색블록의 수를 알 때, 카펫의 크기를 구하는 문제입니다.
<Solution>
노란색 블록의 수의 약수를 구한 다음 그 약수를 사용하여 각각의 경우에 대해 탐색해 갈색 블록의 수와 맞아떨어지는 순간 return 하면 되는 문제입니다.
이 때, 약수는 대칭성을 가지므로 반만 탐색하도록 하였습니다. ex) 6의 약수 : 1, 2, 3, 6 에서 1*6과 6*1을 탐색하는 것은 사실 같은 것임
실제 구현은 아래와 같습니다.
def solution(brown, yellow):
p = []
for i in range(1,yellow+1):
if yellow % i == 0:
p.append(i)
# print(p)
search_len = len(p)//2+len(p)%2
# print(search_len)
for j in range(search_len):
if brown+yellow == (p[j]+2)*((yellow/p[j])+2):
return [int((yellow/p[j])+2),(p[j]+2)]
반응형
'코딩테스트 > Python 문제풀이' 카테고리의 다른 글
[프로그래머스] 가장 먼 노드 (0) | 2022.06.14 |
---|---|
[프로그래머스] 더 맵게 (0) | 2022.06.14 |
[프로그래머스] K번째수 (0) | 2022.06.14 |
[프로그래머스] 디스크 컨트롤러 (0) | 2022.06.14 |
[프로그래머스] 기능개발 (0) | 2022.06.13 |