덧칠하기 - Python

2023. 12. 11. 23:12공부/📝 프로그래머스

1. 풀이 코드

def solution(n, m, section):
    answer = 0
    wall_list = []
    for _ in range(n + 1):
        wall_list.append(True)
    for item in section:
        wall_list[item] = False

    print(wall_list)
        
    for i in range(1, n + 1):
        print(i, "before", wall_list)
        if wall_list[i] == False:
            for j in range(i, min(i + m, n + 1)):
                wall_list[j] = True
            answer += 1
            print("check")
        print(i, "after", wall_list)

    return answer



print(solution(8, 4, [2, 3, 6]))

  오늘은 코드가 덜 보여서 print()를 많이 넣었습니다. 원리는 앞에서부터 차근차근 칠한다는 가정 하에 최소 횟수를 구합니다. 만약 프로그래머스에서 코드 실행한다면 출력 크기 초과로 인해 실패가 나오므로 print()는 모두 지워야합니다.

 

2. 다른 사람 풀이 코드

def solution(n, m, section):
    answer = 1
    prev = section[0]
    for sec in section:
        if sec - prev >= m:
            prev = sec
            answer += 1

    return answer

  정말 창의적이네요. 이런 생각을 한다는게 부럽습니다. 저는 wall_list라는 list를 만들어 벽에서 색칠한다고 했으나, 위와 같이 section 내에서 모두 처리가 가능했군요. 메모리도 훨씬 가성비가 좋습니다.


 

프로그래머스

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

programmers.co.kr

 

'공부 > 📝 프로그래머스' 카테고리의 다른 글

[1차] 다트 게임 - Python  (0) 2023.12.13
실패율 - Python  (0) 2023.12.13
기사단원의 무기 - Python  (0) 2023.12.10
[PCCE 기출문제] 1번 / 출력 - Python  (0) 2023.12.10
소수 찾기 - Python  (0) 2023.12.10