본문 바로가기
코딩테스트/코딩테스트 문제

코딩테스트 준비 - 프로그래머스: 카펫 풀이 (파이썬)

by 공부가싫다가도좋아 2021. 7. 2.
반응형

카펫 풀이


문제풀러가기

https://programmers.co.kr/learn/courses/30/lessons/42842?language=python3 

 

코딩테스트 연습 - 카펫

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과

programmers.co.kr


문제 분석

1. brown+yellow = 사각형 넓이 이다.

2. (가로*2)+(세로-2)*2 = 테두리 넓이, 즉 brown 이다.

* 위와 같이 가로길이 4, 세로길이가 3일때

brown = (4*2)+(3-2)*2


코드

def solution(brown, yellow):
    result=[]
    for i in range(3,int((brown+yellow)**0.5)+1):
        if (brown+yellow)%i==0:
            row=(brown+yellow)//i
            if (row*2)+(i-2)*2==brown:
                return [row,i]

코드 분석

 

def solution(brown, yellow):
    result=[]
    for i in range(3,int((brown+yellow)**0.5)+1):#에라토스테네스의 체 활용
        if (brown+yellow)%i==0: #i가 나누어 떨어질때
            row=(brown+yellow)//i # i의 몫을 가로라고 놓는다
            if (row*2)+(i-2)*2==brown: #문제분석에서 얻은 공식과 맞다면 row와 i를 반환해준다
                return [row,i]

* 위 코드에서 range(3,~~)부터 시작한 이유는, 세로가 3 이하일 경우 노란타일을 만들 수 없기 때문이다.

 

반응형

댓글