본문 바로가기

분류 전체보기544

Kotlin] 백준 15128번 문제 풀이 https://www.acmicpc.net/problem/15128 더보기이 문제는 (다른 언어는 모르겠는데) 자바 코틀린은 부동소수점 문제로 인해 걸린다. 그래서 실수 연산에서 걸리게 된다. (부동 소수점 문제에 대한 글)https://www.acmicpc.net/blog/view/37 그래서 double을 쓰게 되면 실수연산에 걸려 문제가 터진(?)다.그럼 코틀린에서 부동소수점 연산의 오류를 피하게 되는 방법이 뭐인가?1. 연산의 순서를 바꾸어 실수 연산의 가능성 줄이기2. double 대신 long 쓰기 long과 double의 차이를 보자. Long 타입- 정수형 : Long은 64비트 정수형 데이터 타입. 부호가 있는 경우 +- 2^63의 범위를 가짐.- 정밀도 : Long은 정수이기 때문에 6.. 2024. 5. 17.
Kotlin] 백준 11282번 풀이 https://www.acmicpc.net/problem/11282 더보기이 문제는.. 한글 유니코드 규칙을 알고 있어야 한다.한글의 유니코드는 다음과 같이 초, 중, 종성으로 나누어져있고, 각각의 위치에서 인덱스를 빼내어 유니코드를 도출하는 방식이다.따라서 해당 인덱스를 찾아낸다면 어렵지 않다. val firstList = arrayOf("ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ")val secondList = arrayOf("ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ", "ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ", "ㅞ", "ㅟ", "ㅠ".. 2024. 5. 14.
Kotlin] 백준 14928번 문제 풀이 https://www.acmicpc.net/problem/14928 더보기이 문제는 BigInteger로 풀면 시간초과가 난다.그래서 이 문제는 이렇게 푸는게 아니라 모듈로 연산의 규칙을 이용해서 푼다. (a mod c + b mod c) mod c = (a+b) mod c 그러니까, 23을 10으로 나눈다 가정하면, (20 % 10 + 3 % 10) % 10 = (0 + 3) % 10 = 3 은 23 % 10 = 3과 일치한다. 따라서 이들을 따로따로 떼어 나누면 해당 모듈로 연산의 규칙을 따를 수 있다. 즉, 한자리씩 떼어 10의 자리씩 연산한다.이를 코드로 보면 fun main(args: Array) { question14928()}fun question14928() { var numbe.. 2024. 4. 29.
Kotlin] 백준 1271번 풀이 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이라는 클래스로 이를 수.. 2024. 4. 25.
반응형