알고리즘/백준

[백준/c++/swift] 19941번: 햄버거 분배

녕이 2022. 11. 3. 17:02
728x90

 

https://www.acmicpc.net/problem/19941

 

19941번: 햄버거 분배

기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사

www.acmicpc.net

 

처음엔 앞에 K번, 뒤에 K번 하는 것을 나누고, 맨 앞/뒤에 있는 원소도 따로 구현했는데

생각해보니 앞으로 K번, 뒤로 K번을 한 번에 쭉 훑으면서 진행할 수 있겠다 생각했다.

H 햄버거를 먹으면 해당 자리를 - 로 변경해주고 카운팅 하면서 진행했다.

 

c++

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int n, k;
    int cnt = 0;
    string s;
    cin >> n >> k;
    cin >> s;
    for(int i=0; i<n; i++){
        if(s[i] != 'P') continue;
        for(int j=i-k; j<=i+k; j++){
            if(0<=j && j<n && s[j] == 'H'){
                s[j] = '-';
                cnt++;
                break;
            }
        }
    }
    cout << cnt << '\n';
    return 0;
}

 

swift

import Foundation

let input = readLine()!.split(separator: " ")
let n = Int(input[0])!
let k = Int(input[1])!
var cnt = 0
let str = readLine()!
var arr = str.map{$0}
for i in 0..<n {
    if arr[i] != "P" { continue }
    for j in (i - k)...(i + k) {
        if (0..<n) ~= j && arr[j] == "H" {
            arr[j] = "-"
            cnt += 1
            break
        }
    }
}
print(cnt)

 

 

 

728x90