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
'알고리즘 > 백준' 카테고리의 다른 글
[백준/c++] 11559번: 뿌요뿌요 (0) | 2022.11.13 |
---|---|
[백준/c++] 15683번: 감시 (0) | 2022.11.10 |
[백준/c++/swift] 10448번: 유레카 이론 (0) | 2022.11.03 |
[백준/c++] 14425번: 문자열 집합 (0) | 2022.10.01 |
[백준/c++] 1935번: 후위 표기식2 (1) | 2022.09.30 |