*문제출처*
programmers.co.kr/learn/courses/30/lessons/62048
코딩테스트 연습 - 멀쩡한 사각형
가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을
programmers.co.kr
문제 분석
가로(W), 세로(H) 길이의 직사각형이 주어진다.
1X1 크기의 정사각형으로 자르고 대각선을 그었을 때
온전한 정사각형의 개수를 구해보자
처음 문제를 접했을 때 DP로 접근하였다.
하지만 4*10 정도 크기를 직접 구해보니 규칙이 없어서 이 방법은 포기하고 다른 방법을 강구하였다.
1차함수를 배운 사람이라면 쉽게 풀 수 있는 문제였지만, 문제 해결 과정을 도출해 내기까지가 어려웠다.
문제에서 주어진 사각판을 좌표평면이라 생각해보자.
좌측 아래와 우측 위를 두 점으로 잡고 일차함수를 표현한다.
각 x좌표에서 최대의 y값을 구해주면 멀쩡한 사각형의 개수가 나온다.
위 아래가 대칭이므로 결과값에 *2를 해주면 답이다.
주의사항으로는 오버플로우 될 문제가 있어 작은 값을 큰값으로 나누어 주어야 한다.
'Algorithm' 카테고리의 다른 글
백준 - 1422번(숫자의 신) / C++ (0) | 2021.02.22 |
---|---|
프로그래머스 - 가장 큰 수 / C++ (0) | 2021.02.22 |
백준 - 17070번(파이프 옮기기 1) / C++ (0) | 2020.08.23 |
백준 - 15686번(치킨 배달) / C++ (0) | 2020.07.09 |
백준 - 15685번(드래곤 커브) / C++ (0) | 2020.07.09 |