-
멀쩡한 사각형 , 패턴을 찾자. gpt : GCD 한줄 처리CodeingTestPrac/Java Coding Test 2023. 8. 5. 20:53
https://school.programmers.co.kr/learn/courses/30/lessons/62048
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
다각선의 블록을 제외한 나머지의 넓이를 구하는 문제이다.
사용가능한 블록의 패턴을 찾기 위해서 시도했으나, 실패를 했다. , 최대 공약수가 힌트가 될것이라는 직관이 어느정도 나왔지만, 모눈 종이의 도움없이는 증명이 어려웠다.
사용 불가능한 넓이를 한번 고려를 해봐야한다.
전체 넓이 = 사용 가능 + 사용 불가 이기 때문이다.
-> 사용 불가능한 넓의 패턴 = 주어진 사각형의 가로 세로의 최대 공약수의 패턴
class Solution { // answ = all - (w + h - GCD(w,h)) public long solution(int w, int h) { return (long) w * h - ((long) w + h - gcd(w, h)); } public int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } }
gpt 의 gcd 함수 알고리즘이다.
1. a 나 b 중 하나가 0이라면 , 알고리즘은 즉시 종료가 된다.
2. 큰수는 작은수로 나눈 나머지로 대체가 되므로
큰수는 절반 이상으로 줄어든다.
유클리드 알고리즘의 시간 복잡도는 로, 매우 효율적입니다.
public int gcd(int a, int b) { if (b == 0) { return a; } else { return gcd(b, a % b); } }
'CodeingTestPrac > Java Coding Test' 카테고리의 다른 글
1 번부터 가장 먼 거리의 노드의 개수 ? 배열에서 최대값의 개수 구하기 (0) 2023.08.06 gcd 여러개 해야함 (0) 2023.08.05 DS : Stack "baabaa" (0) 2023.07.14 프로그래머스 야근지수 자바 [14일차](효율성 문제) (0) 2023.07.09 코테 연습[자바 코테 준비 13일차] stream 연습 (0) 2023.07.08