상세 컨텐츠

본문 제목

[프로그래머스] 덧칠하기

Algorithm

by 쑤야. 2024. 3. 21. 09:14

본문

https://school.programmers.co.kr/learn/courses/30/lessons/161989?language=swift

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

접근


실패

  • 덧칠해야 하는 가장 왼쪽 블록과 가장 오른쪽 블록에 대한 정보를 저장해 m만큼 왼쪽 블록을 갱신하면서 덧칠 수행
  • 인덱스에 대한 정보를 저장하기 때문에, 중간에 덧칠이 필요없는 구간에 대해서도 카운팅이 될 수 있음 → 반례
func solution(_ n:Int, _ m:Int, _ section:[Int]) -> Int {
    
    var answer = 0
    var range = (section.min()!, section.max()!)
    
    while range.0 <= range.1 {
        answer += 1
        range.0 = range.0+m
    }
    
    return answer
}

 

 

성공

  • 이전 구간에 대한 정보를 저장하고, section에 대해 반복문을 수행
  • 이전에 점검한 블록과 구간에 속한 경우는 카운팅하지 않고, 속하지 않은 경우에만 카운팅

 

코드


func solution(_ n:Int, _ m:Int, _ section:[Int]) -> Int {
    
    var answer = 1
    var pre = section.min()!
    
    for i in section {
        if i-pre >= m {
            answer += 1
            pre = i
        }
    }

    return answer
}

관련글 더보기