덧칠하기 - 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 내에서 모두 처리가 가능했군요. 메모리도 훨씬 가성비가 좋습니다.
'공부 > 📝 프로그래머스' 카테고리의 다른 글
[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 |