ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 1806 부분합
    Algorithm/BOJ 2021. 1. 22. 11:43
    728x90

    출처: https://www.acmicpc.net/problem/1806

    분류: 투포인터


    접근방식

    앞선 투포인터 문제와 거의 비슷했습니다. 이 문제도 전형적인 투포인터 방식으로 풀었습니다 :)

     

    해결방법

    protocol Readable {
        func readSingleValue() -> String
        func readArray(with separator: Character) -> [String]
    }
    
    extension Readable {
        func readSingleValue() -> String {
            return readLine()!
        }
        
        func readSingleValue() -> Int {
            return Int(readLine()!)!
        }
        
        func readArray(with separator: Character) -> [String] {
            return readLine()!.split(separator: " ").map { String($0) }
        }
        
        func readArray(with separator: Character) -> [Int] {
            return readLine()!.split(separator: " ").map { Int(String($0))! }
        }
    }
    
    class BOJ1806: Readable {
        
        func input() {
            let data: [Int] = readArray(with: " ")
            target = data[1]
            array = readArray(with: " ")
        }
        
        // MARK: Properties
        
        var target: Int!
        var array: [Int]!
        
        // MARK: Solution
        
        func solution() {
            input()
            
            var smallSize = 0
            var lead = 0
            var second = 0
            var sum = array[0]
            
            while lead < array.count, second < array.count {
                if sum >= target {
                    let size = lead - second + 1
                    if smallSize == 0 || smallSize > size {
                        smallSize = size
                    }
                    sum -= array[second]
                    second += 1
                } else {
                    lead += 1
                    if lead < array.count {
                        sum += array[lead]
                    }
                }
            }
            
            print(smallSize)
        }
    }
    
    BOJ1806().solution()

     

    배운점

    'Algorithm > BOJ' 카테고리의 다른 글

    백준 1300 K번째 수  (0) 2021.01.26
    백준 1339 단어 수학  (0) 2021.01.22
    백준 1967 트리의 지름  (0) 2021.01.21
    백준 11725 트리의 부모 찾기  (0) 2021.01.14
    백준 1991 트리 순회  (0) 2021.01.13

    댓글

Designed by Tistory.