일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- SW정글
- Spring
- 템플릿 문자열
- 정글sw
- python
- javascript
- 회원가입 폼
- 리액트
- 백준
- 사용자 정의 객체
- conding test
- html input
- node.js
- 자바스크립트
- malloc-lab
- 코딩테스트
- sw정글사관학교
- JavaScrpit
- React
- 자바스크립트 문자열 변수
- PINTOS
- Express
- HTML
- sw 정글
- 목록 창 만들기
- Coding Test
- dfsbfs
- 회원가입
- 프로그래머스
- onChange
Archives
- Today
- Total
코드치고 무게치고
[백준 python] 19941번 햄버거 분배 - 그리디 본문
[백준 python] 19941번 햄버거 분배 - 그리디
레벨: 실버3
언어: python
📑풀이 과정
생각한 아이디어를 코드로 구현할 수 있다면 누구나 쉽게 풀 수 있는 문제이다.
햄버거를 먹을 수 있는 최대 사람의 수는 사람의 위치 P에서 -k ~ +k
안에 햄버거가 있는지 탐색하면 된다.
그리고 찾은 햄버거 'H'를 다른 값으로 바꿔주어 다시 카운팅 하지 않게 한다.
0 1 2 3 4 -> 위치
H P P P H 이고 k = 1 일 때
처음 p에서 0 ~ 2까지 탐색하여 H(햄버거)를 다른 값(필자는 o로 바꿈)으로 바꿔서
o P P P H 가 되고
최종적으로
o P P P o가 되며 최대 인원은 1번과 3번이 햄버거를 먹어서 2명이 된다.
! 단 탐색 시 주의할 점은 테이블 배열의 시작과 끝을 넘지 않게 범위를 설정해주어야 한다.
📋풀이 코드
import sys
sys.stdin = open("input_py.txt", "r")
input = sys.stdin.readline
N, K = map(int, input().split(' '))
table = list(input().strip())
cnt = 0
for idx, val in enumerate(table):
if val =='P':
# 범위 설정 주의
for i in range(max(idx-K, 0), min(idx+K+1, N)):
if table[i] =='H':
cnt+=1
table[i] = 'O'
break
print(cnt)
'개발공부 > 코딩테스트 준비' 카테고리의 다른 글
[백준 python] 12904번 A와 B 그리디 (0) | 2022.03.11 |
---|---|
[백준 python] 1339번 단어 수학 - 그리디 (0) | 2022.03.10 |
[백준 python] 1105번 팔 - 그리디 (0) | 2022.03.09 |
[백준 python] 1246번 온라인 판매 (0) | 2022.03.05 |
[백준 python] 1449번 수리공 항승 - 그리디 (0) | 2022.03.05 |
Comments