본문 바로가기
코딩 테스트/프로그래머스

덧칠하기

by ornni 2024. 4. 10.
728x90
반응형

첫번째 코드

 

딱 보고 생각이 든 것은 슬라이딩 윈도우 같이 생겼네!

 

coloring이라는 변수에 section의 맨 앞에 존재하는 원소부터 m개까지는 추가해서 section에서 제거하자

하여 section에 원소가 더 이상 존재하지 않으면 멈춘다! 라는 아이디어로 시작해서 중복과 제거, 추가가 쉬운 집합이 생각이 났다!

 

def solution(n, m, section):
    answer = 0
    
    section = set(section)
                   
    while section:
        coloring = set(range(min(section), min(section) + m))
        section = section - coloring
        answer += 1
    
    return answer

 

해당 코드는 정답을 맞추는 것 같으나 몇 부분에서 시간 초과가 나타난다...

n, m이 엄청 커질수도 있어서 그런강...?


 

두번째 코드

 

그러면 place라는 n만큼 있는 리스트를 생성하자!

해당 리스트는 색이 칠해져 있는 경우는 1로, 칠해지지 않은 경우는 0으로 만든 후

0인 경우에 m만큼까지 1로 바꾼다

 

section안의 원소만큼 반복하면서 1이면 그냥 두고 0인 경우에 다시 m만큼 1로 바꾼다

이렇게 answer에 개수를 더하는 방법으로 진행한다!

 

def solution(n, m, section):
    answer = 0
    place = [1] * n
    
    for i in section:
        place[i-1] = 0
    
    for i in section:
        if place[i-1] == 0:
            place[i-1 : i+m-1] = [1] * m
            answer += 1    
    return answer

 

통과!

정작 코드를 작성할 때는 크게 고민하지 않은 것 같은데 코드를 작성하기 전 아이디어 생각에서 시간이 좀 걸린 느낌이다!


링크

https://github.com/ornni/programmers/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/161989.%E2%80%85%EB%8D%A7%EC%B9%A0%ED%95%98%EA%B8%B0

 

programmers/프로그래머스/1/161989. 덧칠하기 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

가운데 글자 가져오기  (2) 2024.04.12
K번째 수  (0) 2024.04.11
x만큼 간격이 있는 n개의 숫자  (0) 2024.04.10
로또의 최고 순위와 최저 순위  (0) 2024.04.09
없는 숫자 더하기  (0) 2024.04.09