[프로그래머스] - 멀쩡한 사각형(Java)
문제📝
풀이💡
- 최대공약수를 구하는
gcd
함수를 만들어준다.- 사용할 수 있는 칸 = (너비*높이) - (너비+높이-최대공약수(너비,높이)이다.
코드💻
/*
* 프로그래머스 Lv2 - 멀쩡한 사각형
* 문제링크:https://programmers.co.kr/learn/courses/30/lessons/62048
*/
class Solution {
public long solution(int w, int h) {
long answer= 0;
long w1 = (long)w; // long형으로 변환
long h1 = (long)h; // long형으로 변환
answer = (w1*h1) - (w1+h1-gcd(w1,h1));
return answer;
}
public static long gcd(long w, long h) { // 최대 공약수
long i=0;
long max = Math.max(w, h); // 최대값 정하기
long min = Math.min(w, h); // 최소값 정하기
for(i=min; i>=0; i--) {
if((w%i==0)&&(h%i ==0)) {
break;
// w%i==0과 h%i==0이 참일 때 가장 먼저 해당되면 최대 공약수
}
}
return i;
}
}
결과😎
느낀점👨💻
어떻게 풀어야 할지 감이 안 왔는데 문제를 자세히보니 일종의 똑같은 패턴이 있다는 것을 알게 되어서 그 공식을 구하게 되었고 그 공식을 사용하려면 최대공약수가 필요하다는 것을 알게되어서 별도로 최대공약수 함수를 만들어줘서 문제를 해결할 수 있었다.
Sinbmil의 알고리즘 문제 코드
-> https://github.com/Sinbmil/Algorithm-Study
Author And Source
이 문제에 관하여([프로그래머스] - 멀쩡한 사각형(Java)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sinbmil/프로그래머스-멀쩡한-사각형Java저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)