-
[💕 프로그래머스] 카펫Algorithm/1일 1코테 2020. 12. 7. 11:53반응형
프로그래머스 2단계
카펫
Q. 문제
programmers.co.kr/learn/courses/30/lessons/42842#
A. 답안
def solution(brown, yellow): # 1번 s = brown + yellow a = [] x = s for _ in range(s): if s%x == 0: if x < s/x: break else: a.append([x, int(s/x)]) x -= 1 # 2번 for i in a: if i[1] >= 3 and (i[0]-2) * (i[1]-2) == yellow: return i
풀이
✔ 1번)
brown+yellow를 구해서 s에 저장한 뒤 곱해서 s가 나오는 쌍을 모두 구함.
ex) a의 예시 - [[12, 1], [6, 2], [4, 3]]
하지만 조건식에 가로가 무조건 세로보다 같거나 길다고 했으니 세로가 길어지면 for문을 멈춤 (break)
✔ 2번)
조건 1.
가로, 세로는 무조건 세칸 이상이어야함. 그래야지 노란격자를 가운데 껴넣을 수 있으니!
가로는 모두 3 이상이므로 세로의 조건을 넣어주기 위해 i[3] >= 3 조건을 넣어줌
갈 갈 갈 갈 노란격자 갈 갈 갈 갈 조건 2.
(가로-2)*(세로-2)가 yellow 격자의 크기와 딱 맞아야 함. 격자의 자리가 남아서도 커서도 안됨.
해당되는 값을 return
다른사람의 풀이
def solution(brown, red): for i in range(1, int(red**(1/2))+1): if red % i == 0: if 2*(i + red//i) == brown-4: return [red//i+2, i+2]
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[💕 프로그래머스] 최솟값 만들기 (0) 2020.12.15 [💕 프로그래머스] 숫자의 표현 (0) 2020.12.07 [💕 프로그래머스 Python] 타겟 넘버 (0) 2020.12.06 [🤷♀️ 백준] 1912번. 연속합 (0) 2020.11.16 [💕 백준] 11053번. 가장 긴 증가하는 부분 수열 (0) 2020.11.16