ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준][Kotlin] 2018번 수들의 합5
    백준 2023. 2. 26. 01:19
    728x90

    해당 문제는 투 포인터의 사용과 합계의 개념을 응용하여 작성 할 수 있는 문제였습니다.

     

    해당 문제의 설명을 보시면 예를 들어, 15를 나타내는 방법은 15, 7+8, 4+5+6, 1+2+3+4+5의 4가지가 있다. 반면에 10을 나타내는 방법은 10, 1+2+3+4의 2가지가 있다. 라고 설명해 주고 있습니다.

     

    만약 합계 값이 구하려는 값보다 클 경우는 작은 값을 가르키고 있는 인덱스값을 합계값에서 증가시키고, 이전에 가르키고 있던 값을 기존 합계값에서 빼주면 됩니다 

    ex) 1+2+3 = 6 구하려는 값 5 이라면 2+3 = 5 

    반대의 경우에는 큰 값을 가르키고 있는 인덱스를 증가 시킨 후 합계값에 더해 주면 됩니다.

    ex) 3+4+5 = 12 구하려는 값 18 이라면 3+4+5+6 = 18 

     

    하기는 작성한 코드와 제출 결과 입니다.

     

    import java.util.StringTokenizer
    
    fun main() {
        var st = StringTokenizer(readln())
        val N = st.nextToken().toInt()
        var idx1 = 1
        var idx2 = 2
        var answer = 1
        var sum = idx1 + idx2
    //    val s = System.currentTimeMillis()
        while(idx2 <= (N+1)/2 ){
            if(sum == N){
                answer++
                idx2++
                sum += idx2
            } else if(sum > N){
                sum -= idx1
                idx1++
            } else {
                idx2++
                sum += idx2
            }
        }
    //    val e = System.currentTimeMillis()
        println(answer)
    //    println((e-s)/1000.0)
    }

    '백준' 카테고리의 다른 글

    [백준][Kotlin]1377번 버블 소트  (0) 2023.02.27
    [백준][Kotlin]2164번 카드2  (0) 2023.02.26
    [백준][Kotlin]1940번 주몽  (0) 2023.02.26
    [백준][Kotlin]1874번 스택 수열  (0) 2023.02.26
    [백준][Kotlin]1546번 평균  (0) 2023.02.26
Designed by Tistory.