반응형
문제분석
문제를 이해하기는 매우쉽다. 대각선으로 선을 그은뒤, 잘라진 사각형을 제외한다.
그런데, 잘라진 사각형을 어떻게 계산해야하는지 정말 막막하다.
무슨 특수한규칙이 있을텐데, 제로베이스로 그 규칙을 떠올리긴 매우 힘들다.
작성자는, 규칙을 발견하지못해서 참고자료를 검색하고 보면서 풀었다.
8X12 사각형을 잘려나간 사각형의 모양을 자세히보면, 같은모양이 4번 반복된다.
이 반복되는 횟수가, 가로와 세로의 최소공배수의 횟수만큼 반복한다.
(최소공배수 구하는 로직은 유클리드 호제법을 참고하세요!)
반복되는 모양의 갯수는 (가로/최소공배수)+(세로/최소공배수)-1 만큼의 갯수다.
전체 갯수- (최소공배수)*((가로/최소공배수)+(세로/최소공배수)-1)가 답이다.
문제풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
class Solution {
public long solution(long w, long h) {
long answer = 1;
long a =gcd(w,h);
return answer=w*h-a*((w/a)+(h/a)-1);
}
public long gcd (long w,long h){
while(h!=0){
long r=w%h;
w=h;
h=r;
}
return w;
}
}
|
cs |
반응형
'알고리즘 > 프로그래머스 Level2' 카테고리의 다른 글
[프로그래머스,자바] Level2: 124 나라의 숫자 (0) | 2021.09.25 |
---|---|
[프로그래머스,자바] Level2: 빛의 경로 사이클 (0) | 2021.09.25 |
[프로그래머스,자바] Level2:오픈채팅방 (0) | 2021.09.22 |
[프로그래머스,자바] Level2: 문자열 압축 (0) | 2021.09.22 |
[프로그래머스,자바] Level2: 위클리챌린지 7주차 [입실 퇴실] (0) | 2021.09.14 |