728x90
반응형
덧칠하기 (프로그래머스 Lv.1)
https://school.programmers.co.kr/learn/courses/30/lessons/161989
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 코드
def solution(n, m, section):
answer = 0
wall = [1]*(n+1) #페인트 칠해져있는 부분 1
wall[0] = 4
for sec in section:
wall[sec] = 0 #페인트 칠해야하는 부분 0
for i in range(1,n+1):
if wall[i] == 0:
wall[i] = 1
answer += 1
if m != 1:
for j in range(1,m):
if i+j < n: #벽의 범위를 넘어서지 않은 경우
wall[i+j] = 1
else:
return answer
return answer
칸이 1부터 세기 시작해서 0은 그냥 버리는 칸으로 4 지정해줬다.
페인트 칠해야 할 부분을 0, 칠하지 않아도 되는 부분을 1로 해주고 앞에부터 m크기 만큼 칠해주면 된다. 중요한 점은 버리는 칸 0을 넣어줬기때문에 for문에 n+1까지를 해줘야한다는 점
그리고 오늘도 어김 없이 다른 분들이 작성하신 베스트 코드를 찾아봤다.
def solution(n, m, section):
answer = 1
prev = section[0]
for sec in section:
if sec - prev >= m:
prev = sec
answer += 1
return answer
깔끔... 이 정도면 예술인듯
생각해보니까 앞에서 부터 차근차근 안가도 0인 list, section이 주어졌으니 0인 곳만 방문해보면 되는 거였구나! 했다.
다음에 꼭 참고해야지
728x90
반응형
'Python공부 > 프로그래머스' 카테고리의 다른 글
(Python) 숫자문자열과 영단어 (프로그래머스 Lv.1)/ replace() (0) | 2023.06.16 |
---|---|
(Python) 비밀지도 (프로그래머스 Lv.1)/.zfill() (0) | 2023.06.16 |
(Python) 체육복(프로그래머스Lv.1) (0) | 2023.06.15 |
(Python) 숫자 짝꿍 (프로그래머스 Lv.1) (0) | 2023.06.15 |
(Python) 크기가 작은 부분 문자열(프로그래머스Lv.1)/[:]의 활용 (0) | 2023.06.14 |