프로그래밍/알고리즘

Softeer-연습문제-스마트 물류(C++)

Se-chan Oh 2021. 12. 23. 19:32

문제 링크 :

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로 표시한다.