본문 바로가기

Python

[알고리즘_Programmers] 8주차 3번 문제 및 풀이

이번 포스팅에서는 프로그래머스의 "카펫"이라는 문제에 대한 풀이를 진행하도록 하겠다.

 

우선 주어진 문제는 다음과 같다.

 

<문제>

 

  • 이 문제는 결국 풀지 못했다...ㅜㅜ (접근법 자체가 안 떠올라서...) 그래서 다른 사람의 풀이를 참고해서 설명하도록 하겠다.

<다른 사람의 풀이>

 

  • 우선 문제를 어떻게 접근해서 풀어야 할지에 대해서 설명하겠다.
  • 다음과 같이, 가로의 길이가 x이고 세로의 길이가 y인 카펫이 주어졌다고 생각해보자.

  • 위 그림을 보면, x * y = brown + yellow 이고 (x - 2) * (y - 2) = yellow 인 것을 알 수 있다.
  • 따라서 이 두 개의 방정식을 연립해서 풀면, 다음과 같은 식이 나오게 된다.

  • 위 방정식의 해를 근의 공식을 사용해서 구해보면 다음과 같다.

  • 이렇게 구해진 x, y 값들 중에서 더 큰 값을 가로에, 더 작은 값을 세로로 지정해주면 된다!!

 

다른 사람의 풀이를 보다보니, 이 문제는 수학적으로 접근하면 쉽게 풀 수 있는 문제라는 생각이 들었다.

 

제대로 된 방정식만 세웠더라면, 문제를 쉽게 풀 수 있었을텐데...아쉽다. 내가 문제를 너무 어렵게만 생각했던 것 같다.

 

때로는 예상치 못한 쉬운 접근법이, 오히려 정답에 한 걸음 더 가까이 다가갈수 있도록 해줄 수 있다는 것을 느낀 문제였다.

 

오늘 포스팅은 여기서 마치도록 하겠다 ^^

 

 

<문제 풀이 참고>

https://leedakyeong.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%B9%B4%ED%8E%AB-in-python

 

[프로그래머스] 카펫 in python

파이썬으로 백준풀기 :: 카펫 문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 빨간색으로 칠해져 있고 모서리는 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 �

leedakyeong.tistory.com