문제 링크 :
https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=414&sw_prbl_sbms_sn=40932
문제 개요 :
물건을 집을 수 있는 로봇의 최대 개수 구하기
#include<iostream>
#include<vector>
using namespace std;
int main(int argc, char** argv)
{
// 입력
int N, K;
cin >> N >> K;
vector<char> line(N);
for (int i=0;i<N;i++){
cin >> line[i];
}
// 계산
int res=0;
for (int i=0; i<N; i++){
if (line[i] == 'P') {
int j = i - K;
if (j<0) j=0;
while (abs(j-i) <= K and j<N){
if (line[j]=='H'){
line[j] = 'h';
line[i] = 'p';
res++;
break;
}
j++;
}
}
}
// 출력
printf("%d",res);
return 0;
}
문제 해결 방법
1. 반복문 2번을 돌린다.
2. 1번째 반복문에서는 로봇의 위치를 구한다.
3. 2번째 반복문에서는 물건의 위치를 구한다.
3. 로봇과 물건의 위치를 빼서 거리를 구한다.
4. 로봇이 물건을 집을 수 있는 거리에 있으면 물건을 집는다. 이떄, 집은 물건은 h로 표시한다.
'프로그래밍 > 알고리즘' 카테고리의 다른 글
Softeer-연습문제-[인증평가(1차) 기출] 차세대 지능형 교통시스템(C++) (0) | 2022.01.05 |
---|---|
Softeer-연습문제-[인증평가(1차) 기출] 로봇이 지나간 경로(C++) (0) | 2022.01.04 |
Softeer-연습문제-H-클린알파(C++) (0) | 2021.12.23 |
Softeer-연습문제-금고털이(C++) (0) | 2021.12.23 |
Softeer-연습문제-우물 안 개구리(C++) (0) | 2021.09.02 |