Softeer Lv3 : 스마트 물류 [C]

문제

Softeer Lv3 : 스마트 물류 – https://softeer.ai/practice/6279


알고리즘

  1. P(로봇)일 경우 잡을 수 있는 부품 탐색
  2. 로봇기준 왼쪽 탐색(로봇과 가장 먼 곳 부터)
  3. 로봇기준 오른쪽 탐색(로봇과 가장 가까운 곳 부터)


소스코드

#include <stdio.h>

int N, K, ans = 0;
int checked[20000];
char line[20001];

void Pick(int idx){
    /* 2. 로봇기준 왼쪽 탐색(로봇과 가장 먼 곳 부터) */
    for(int i = idx - K; i < idx; i++){
        if(i >= 0 && checked[i] == 0 && line[i] == 'H'){
            checked[i] = 1;
            ans++;
            return;
        }
    }
    /* 3. 로봇기준 오른쪽 탐색(로봇과 가장 가까운 곳 부터) */
    for(int i = idx + 1; i <= idx + K; i++){
        if(i < N && checked[i] == 0 && line[i] == 'H'){
            checked[i] = 1;
            ans++;
            return;
        }
    }
}

int main(){
    scanf("%d %d", &N, &K);

    scanf("%s", line);
    /* 1. P(로봇)일 경우 잡을 수 있는 부품 탐색 */
    for(int i = 0; i < N; i++){
        if(line[i] == 'P')
            Pick(i);
    }

    printf("%d", ans);
    return 0;
}

Leave a Comment