Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Java8
- 알고리즘
- 프로그래머스
- 네트워크
- BFS
- Brute-force
- programmers
- baekjoon
- TDD
- java
- 모던자바
- 스프링
- back-end
- Spring
- lambda
- 그래프
- backtracking
- 자료구조
- 코틀린
- DFS
- kotlin
- 운영체제
- OS
- 자바
- 프로젝트
- LEVEL2
- 백트래킹
- DP
- 백준
- algorithm
Archives
- Today
- Total
요깨비's LAB
[프로그래머스, Kotlin] 멀쩡한 사각형 본문
class Solution {
fun solution(w: Int, h: Int): Long {
var answer: Long = 0
var w = w.toLong()
var h = h.toLong()
val gcd = getGcd(w,h)
answer = ((w*h) - (w+h-gcd))
return answer
}
fun getGcd(num1: Long, num2: Long):Long {
var n1: Long
var n2: Long
var gcd:Long = 1
if(num1 >= num2) {
n1 = num1
n2 = num2
} else {
n1 = num2
n2 = num1
}
for(i in 1..n2) {
if(n1 % i == 0.toLong() && n2 % i == 0.toLong()) {
gcd = i
}
}
return gcd
}
}
해당 아이디어는 어릴때 수학문제중에 비슷한 문제를 본 기억이 있어서 (가로 + 세로 - 최대공약수)의 개념으로 풀었습니다.
제한사항을 유심히 봐야합니다. W,H가 1억 이하의 자연수이므로, 멀쩡한 사각형의 개수를 알기위해서는
전체 사각형 개수 - (손상된 사각형)으로 풀었는데, 1억 * 1억은 Int의 범위를 초과하므로 채점 중간의 오답처리가 됩니다.
따라서 중간에 캐스팅하지 않고 아예 입력 받은 가로 세로를 Long으로 변환하여 처리하였습니다.
'알고리즘(Kotlin) > Simulation' 카테고리의 다른 글
[프로그래머스, Kotlin] 괄호 변환 (0) | 2021.03.31 |
---|---|
[프로그래머스, Kotlin] 신규 아이디 추천 (0) | 2021.03.19 |
Comments