https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
다음과 같이 테두리가 갈색, 나머지 색깔은 노란색인 카펫이 존재한다. 노란색 격자와 갈색 격자의 수가 주어질 때 카펫의 가로 길이와 세로 길이를 구하는 문제이다.
노란색 영역의 가로 길이를 w, 세로 길이를 h라고 하면 갈색 영역은 2*w + 2*h + 4가 된다. 문제 조건에 카펫은 항상 가로 >= 세로 라고 했으므로 가로, 세로 길이를 조정해 가며 입력으로 주어진 갈색 영역의 크기랑 일치한지 확인하면 된다.
brown 24, yellow 24가 주어졌다고 해보자.
가로 세로
24 1
12 2
8 3
6 4
가 가능하고, 2w + 2h + 4의 값은 위에서 부터 차례대로 54, 32, 26, 24이다. brown이 24이므로 노란색 범위의 가로 길이는 6, 세로 길이는 4임을 알 수 있다.
그러면 테두리가 합쳐질 경우 총 가로 길이는 w + 2, 총 세로 길이는 h + 2가 될 것이므로 이를 답으로 반환해주면 된다.
소스 코드
def solution(brown, yellow):
answer = []
for div in range(1, yellow // 2 + 2):
if yellow % div == 0:
garo = yellow // div
sero = div
if 2 * garo + 2 * sero + 4 == brown:
return [garo+2 , sero+2]
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 전력망을 둘로 나누기 [파이썬] (0) | 2022.09.22 |
---|---|
프로그래머스 - 피로도 [파이썬] (0) | 2022.09.21 |
프로그래머스 - H-index [파이썬] (0) | 2022.09.17 |
프로그래머스 - 주식가격 [파이썬] (0) | 2022.09.16 |
프로그래머스 - 베스트 앨범 [Python] (0) | 2022.08.14 |