[kotlin] 백준 분수찾기

Heejin Ryu·2021년 8월 5일
0

Algorithm

목록 보기
14/14
![](https://velog.velcdn.com/images%2Fhuijiny%2Fpost%2F2db5f5b9-9f46-41af-89a1-cb7c2d12f384%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-07-08%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%202.16.36.png)

오늘부터는 동아리 내에서 알고리즘 스터디를 시작해서 백준에서 풀기로 했다!
코틀린으로 백준 인풋값 받는 곳에서 헤맸다 ㅠㅠ
자바 기억이 안나는데 흠.

  1. 인풋 값을 어떻게 받았었는지 기억이 안나서 찾아보느라 오래걸렸다 ㅠㅠ
  2. 약간 대각선으로 기울여 보면
    1/1 ->
    2/1 -> 1/2
    3/1 -> 2/2 -> 1/3
    이런식으로 규칙을 발견할 수 있고, 각 행의 분수의 분모, 분자 합이 같다는 것을 알 수 있다.
    그럼 분모, 분자 중 한 개만 알 수 있으면 구할 수 있다.
  3. 분모, 분자 중 한 개를 알 수 있는 방법은 -> 누적합을 number보다 작은 수까지 계속 더하다가 구하고자 하는 number에서 누적합을 빼면 된다. 그럼 그 줄에서 몇번째 친구인지 알 수 있다.
  4. 짝수줄이면 오른에서 왼, 홀수줄이면 왼에서 오른으로 인덱스를 세면 된당
import java.io.BufferedReader
import java.io.InputStreamReader

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val number = br.readLine().toInt()
    var i = 1
    var sum = 0
    var row = 0
    var col = 0
    while (number > sum + i) {
        sum += i
        i++
    }
    if (i % 2 == 1) {
        row = (number - sum)
        col = (i + 1) - row
    } else {
        col = (number - sum)
        row = (i + 1) - col
    }
    print(col.toString()+'/'+row.toString())
    br.close()
}
profile
Chocolate lover🍫 & Junior Android developer🤖

0개의 댓글