728x90
실버 5
문제
임스는 연계 기술을 사용하는 게임을 플레이 중에 있다. 연계 기술은 사전 기술과 본 기술의 두 개의 개별 기술을 순서대로 사용해야만 정상적으로 사용 가능한 기술을 말한다.
하나의 사전 기술은 하나의 본 기술과만 연계해서 사용할 수 있으며, 연계할 사전 기술 없이 본 기술을 사용했을 경우에는 게임의 스크립트가 꼬여서 이후 사용하는 기술들이 정상적으로 발동되지 않는다. 그렇지만 반드시 사전 기술을 사용한 직후에 본 기술을 사용할 필요는 없으며, 중간에 다른 기술을 사용하여도 연계는 정상적으로 이루어진다.
임스가 사용할 수 있는 기술에는 1 ~9 , 𝐿 , 𝑅 , 𝑆 , 𝐾 가 있다. 1 ~9 는 연계 없이 사용할 수 있는 기술이고, 𝐿 은 𝑅 의 사전 기술, 𝑆 은 𝐾 의 사전 기술이다.
임스가 정해진 순서대로 𝑁 개의 기술을 사용할 때, 기술이 몇 번이나 정상적으로 발동하는지를 구해보자.
단, 연계 기술은 사전 기술과 본 기술 모두 정상적으로 발동되었을 때만 하나의 기술이 발동된 것으로 친다.
입력
첫 번째 줄에는 총 기술 사용 횟수 𝑁 이 주어진다. (1≤𝑁≤200000 )
두 번째 줄에는 임스가 사용할 𝑁 개의 기술이 공백 없이 주어진다.
출력
임스가 정상적으로 기술을 사용한 총 횟수를 출력한다.
728x90
- 기술을 문자열로 저장한다.
- 총 기술 사용 횟수와 L, S 사용 횟수를 카운트한다.
- 기술 문자열을 순회하여 각 문자를 검사한다
- 숫자인 경우 count를 즉시 증가시킨다.
- 'L'인 경우 Lcount를, 'R'인 경우 Rcount를 증가시킨다.
- 'R'인 경우 (또는 'K')
- Lcount가 0보다 크면(사전 기술을 했으면) Lcount를 감소시키고 총 기술 사용 횟수를 1 증가시킨다.
- Lcount가 0이면 사전 기술없이 본 기술을 사용했으므로 이후의 기술은 발동하지 않는다. 반복문을 종료시키고 count를 출력한다.
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
StringBuilder skills = new StringBuilder(br.readLine());
int count = 0;
int LRcount = 0, SKcount = 0;
outerloop: for (int i = 0; i < N; i++) {
char c = skills.charAt(i);
if (Character.isDigit(c)) {
count++;
} else {
switch (c) {
case 'L':
LRcount++;
break;
case 'R':
if (LRcount > 0) {
LRcount--;
count++;
} else
break outerloop;
break;
case 'S':
SKcount++;
break;
case 'K':
if (SKcount > 0) {
SKcount--;
count++;
} else
break outerloop;
break;
default:
break;
}
}
}
bw.write(String.valueOf(count));
bw.flush();
br.close();
bw.close();
}
}

728x90
'코딩테스트 > 백준-Java' 카테고리의 다른 글
[백준 자바] 2164번(카드 2) - 큐 (0) | 2024.07.02 |
---|---|
[백준 자바] 2161번(카드 1) - 큐 (0) | 2024.07.02 |
[백준 자바] 10799번(쇠막대기) (0) | 2024.06.28 |
[백준 자바] 2417번(정수 제곱근) - 큰 수 제곱근 (0) | 2024.06.27 |
[백준 자바] 1920번(수 찾기) - Set, 이진 탐색, Arrays.binarySearch() (0) | 2024.06.27 |