Java

Coding - Smart Robot

kakaroo 2022. 2. 2. 12:45
반응형

article logo

 

 

출처: https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=414

A그룹은 주요 물류센터에 각종 자동화 기기를 도입하며 ‘스마트 물류’를 실현하고 있다.
최근에는 자동차 반조립 부품(KD, Knock-Down) 물류기지인 B센터에 포장 관련 자동화 로봇 개발과 구축을 완료했다.
기존 수작업으로 진행하던 일부 작업 라인을 자동화 기기로 전환해 생산성을 높이기 위한 시도다.
기다란 작업 라인에 로봇과 부품이 아래 그림과 같이 단위 간격으로 놓여 있다. 로봇들의 위치에서 거리가 K 이하인 부품만 잡을 수 있다. 왼쪽 오른쪽은 상관 없다.

입력형식
입력의 첫 줄에는 두 정수 N과 K가 나온다. (1 ≤ N ≤ 20,000, 1 ≤ K ≤ 10)
다음 줄에는 로봇과 부품의 위치가 문자 P(로봇)와 H(부품)로 이루어지는 길이 N인 문자열로 주어진다.
출력형식
여러분은 첫 줄에 하나의 정수를 출력한다.
이 수는 입력에 대해서 부품을 집을 수 있는 최대 로봇 수를 나타낸다.

입력예제 1
20 1
HHPHPPHHPPHPPPHPHPHP
출력예제 1
8

입력예제 2
20 2
HHHHHPPPPPHPHPHPHHHP
출력예제 2
7

 

Language: Java(자바)

public class SmartRobot {
	
	int num;
	int dist;
	
	void solve() throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine();
		StringTokenizer st = new StringTokenizer(str); 
		
		num = Integer.parseInt(st.nextToken());
		dist = Integer.parseInt(st.nextToken());
		
		//Input
		str = br.readLine();
		st = new StringTokenizer(str); 
		char[] arr = new char[num];
		for(int i=0; i<num; i++) {
			arr[i] = str.charAt(i);
		}
		
		int sum = 0;
		for(int i=0; i<num; i++) {
			if(arr[i] == 'P') {	//로봇발견
				for(int j=i-dist; j<=i+dist; j++) {
					if(j < 0) continue;
					if(j >= num) break;
					if(arr[j] == 'H') {	//부품발견
						arr[j] = 'A';
						sum++;
						break;
					}
				}
			}
		}
		System.out.println(sum);
	}

}
반응형

'Java' 카테고리의 다른 글

Android - Nested RecyclerView  (0) 2022.03.15
Coding - Meeting Room  (0) 2022.02.01