eaz_algorithm

[Softeer] 스마트 물류

eaz_silver 2024. 3. 15. 14:52

문제

요약

문자열 안에 P 로봇의 위치에서 k 간격 사이에 있는 H만 집을 수 있을 때,

H를 집을 수 있는 로봇 P의 최대 개수를 구하시오.

 

원본

https://softeer.ai/practice/6279

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

풀이

처음에는 dfs로 풀었는데 최소 경우는 본인 위치에서 가장 먼 것을 골랐을 때이기 때문에

굳이 dfs로 모든 경우를 확인하기 보다는 가장 먼 위치의 하나를 고르면 최대 개수가 구해진다.

올바른 풀이에 근접하게 접근하는 실력은 많이 늘었는데

범위나 반복 break 조건 같은 부분만 더 신경 쓰면 될 것 같다.

import sys
input = sys.stdin.readline

n, k = map(int, input().split())
S = list(input().strip())
answer = 0
visited = [0] * n
    
for i in range(n):
    if S[i] == "P":
        visited[i] = 1
        for j in range(i-k, i+k+1):
            if 0 <= j < n and visited[j] == 0 and S[j] == "H":
                visited[j] = 1
                answer += 1
                break

print(answer)