반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 리눅스
- 개발자
- 코딩테스트
- 쿠버네티스
- IT
- 프로그래머스 #카카오 #IT #코딩테스트
- DPDK
- Kakao
- Python
- 운영체제
- 네트워크
- 프로그래머스
- Linux
- programmers
- springboot
- 알고리즘
- C
- 엘라스틱서치
- 파이썬
- Elasticsearch
- 자바
- 카카오
- Spring
- 캐시
- 도커
- docker
- 스프링
- 스프링부트
- 백엔드
- Java
Archives
- Today
- Total
저고데
[프로그래머스]덧칠 하기 본문
728x90
반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/161989
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드를 작성하기 위한 순서는 다음과 같다.
1. 벽이 칠해진 부분 1로 그렇지 않은 부분을 0으로 만들어준다.
2. 벽의 끝부분에서 롤러 길이까지를 제외하고 롤러의 길이만큼 색칠해주고 answer+1을 해준다.
3. 나머지 부분에서 칠해지지 않은 부분이 있다면 answer+1을 해준다.
def solution(n, m, section):
answer = 0
wall = [1 for _ in range(n)]
rest = []
for i in section:
wall[i-1] = 0 #1번
for i in range(len(wall)-m+1): #2번
if wall[i] == 0:
for j in range(m): #롤러의 길이만큼 색칠해주기
wall[i+j] = 1
answer += 1
for i in range(len(wall)-m+1, len(wall)):
rest.append(wall[i])
if 0 in rest: #3번
answer += 1
return answer
이중반복문을 사용하여 해결할 수 있는 문제였다.
하지만 패인트칠을 해야하는 최소 횟수를 구해야하기 때문에 롤러 길이의 마지막 벽 부분은 따로 빼서 0이 하나라도 있으면 그 부분을 전체 통으로 칠해주는 코드로 문제를 해결하였다.
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스]호텔 대실 (0) | 2023.03.14 |
---|---|
[프로그래머스]연속 펄스 부분 수열의 합 (0) | 2023.03.14 |
[프로그래머스]혼자서 하는 틱택토 (0) | 2023.03.07 |
[프로그래머스]이모티콘 할인행사 (0) | 2023.03.07 |
[프로그래머스]바탕화면 정리 (0) | 2023.03.07 |