완벽하게 다 맞는게 하나도 없네..
다른 사람 코드를 봄
class Solution {
fun gcd(a: Int, b: Int): Long {
if (a==0) return b.toLong()
return gcd(b%a,a)
}
fun solution(w: Int, h: Int): Long {
var wl = w.toLong()
var hl = h.toLong()
return wl*hl-wl-hl+gcd(w,h)
}
}
최대 공약수를 저렇게 구하는 구나
신기함
coding-factory.tistory.com/599
내 논리부터 틀렸던데
그냥 최대공약수를 나눠준 너비와 길이의 값을 더하고 -1을 하면 된다는데 왜그렇지??
--> 단순하게 생각해보면 a*b크기의 (a,b 는 서로소) 직사각형에서는 꼭지점을 시작지점과 끝지점만 지나므로 항상 하나의 정사각형을 지나갈 수 밖에없으므로 출발점 (0,0) 에서 도착점 (a,b)까지 계속해서 하나의 정사각형을 쌓으며 지나감.
그니까
이런식으로 줄을 그어보면 결국 가로 + 세로 -1 개의 사각형을 지나가게 되있음 ㅇㅇ
'코딩테스트(코틀린) 기초부터 연습' 카테고리의 다른 글
이진탐색 -효율성을 높이자 (0) | 2021.04.19 |
---|---|
프로그래머스 괄호변환 (0) | 2021.04.16 |
프로그래머스 배달 문제 (0) | 2021.04.14 |
프로그래머스 이분탐색 입국심사탐색 입국심사 (0) | 2021.04.13 |
프로그래머스 dfs/bfs 여행경로 (0) | 2021.04.12 |