본문 바로가기
스터디(beakjoon)

Kotlin] 백준 1271번 풀이

by 김마리님 2024. 4. 25.

https://www.acmicpc.net/problem/1271

 

1271번: 엄청난 부자2

첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 101000, m과 n은 10진수 정수)

www.acmicpc.net

 

 

더보기

아니 이 문제도 멀쩡한 문제인줄 알았는데 (분노

(1 ≤ m ≤ n ≤ 10^1000, m과 n은 10진수 정수)

이 조건을 못봤다.. 조건..

ㅋㅋ.. 이거 실제로 string으로 뽑아보면 이렇게 생겼다.

 

?????????????????

 

이걸 어떻게 수학적으로 계산해요 미쳤읍니까 휴먼?

근데 놀랍게도 이걸 할 수 있음..

자바에는 LongLong형으로 큰 수를 계산할 수 있지만 코틀린은 LongLong 을 사용할 수 없다. 대신 BigInteger이라는 클래스로 이를 수학적으로 접근할 수 있게 해준다.

val test = BigInteger("11111111111222222222333344444455555555666666777")

 

대신 일반적인 사칙기호 연산자(+, -, /, *)를 쓸 수 없고 특별한 매서드를 통해 계산을 해야한다.

val test = BigInteger("11111111111222222222333344444455555555666666777")
val test2 = BigInteger("888888888888888889999999999999991111111")

test.add(test2) /* '+' */
test.minus(test2) /* '-' */
test.divide(test2) /* '/' */
test.remainder(test2) /* '%' */

 

이를 이용해서 실질적으로 코드로 계산해보자

 

import java.math.BigInteger

fun main(args: Array<String>) {
    question1271()
}

fun question1271() {
    val aliveList = readln().split(" ")

    val money = BigInteger(aliveList[0])
    val alive = BigInteger(aliveList[1])

    println(money.divide(alive))
    println(money.remainder(alive))

}

 

(조건 제대로 안봐서 NumberFormat 걸리자 당황한 흔적)

 

 

반응형

'스터디(beakjoon)' 카테고리의 다른 글

Kotlin] 백준 11282번 풀이  (0) 2024.05.14
Kotlin] 백준 14928번 문제 풀이  (0) 2024.04.29
Kotlin] 백준 17427번 풀이  (0) 2024.04.24
Kotlin] 백준 1748번 문제 풀이  (0) 2024.04.23
Kotlin] 백준 2309 문제풀이  (0) 2024.04.23