반응형
https://programmers.co.kr/learn/courses/30/lessons/42842
def solution(brown, yellow):
width, height = 0, 0
for height in range(3, int((brown+4)/2)):
width = ((brown + 4) / 2) - height
if width < height: break;
if yellow == (width - 2) * (height - 2): break;
return [width, height]
이 문제는 완전탐색 문제로 for문을 돌면서 값이 맞는지 확인하면 되는 문제였습니다.
height를 기준으로 for문을 돌렸는데 height값을 특정하면 width를 계산할 수 있으므로 width를 구합니다. 그 다음 구해진 width와 height로 yellow를 계산하고 입력받은 yellow와 같을 때까지 for문을 반복합니다. 값을 찾았다면 반복문이 종료되고 답을 리턴합니다. 조건에서 width >= height 라는 조건이 있어서 이 조건을 확인할 수 있는 if문도 추가하였습니다.
다른 사람의 코드를 보니까 좀 더 간결하게 쓸 수 있는 것 같다. 코드가 이해가긴 하지만 이렇게 생각하는건 어려울 것 같다...
def solution(brown, yellow):
cand = [(yellow//i,i) for i in range(1, int(yellow**.5)+1) if yellow % i == 0]
for m, n in cand:
if (m+2) * (n+2) == brown+yellow:
return [m+2, n+2]
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Python] 다트게임 (0) | 2021.05.19 |
---|---|
[프로그래머스/Python] 비밀지도 (0) | 2021.05.18 |
[프로그래머스/Python] 소수 찾기 - Level2 (0) | 2021.05.17 |
[프로그래머스/Python] 모의고사 - Level1 (0) | 2021.05.15 |
[프로그래머스/Python] 문자열 압축 (0) | 2021.05.14 |