[백준 자바] 25497번(기술 연계마스터 임스)

2024. 6. 28. 20:23·코딩테스트/백준-Java
728x90

실버 5

문제

임스는 연계 기술을 사용하는 게임을 플레이 중에 있다. 연계 기술은 사전 기술과 본 기술의 두 개의 개별 기술을 순서대로 사용해야만 정상적으로 사용 가능한 기술을 말한다.

하나의 사전 기술은 하나의 본 기술과만 연계해서 사용할 수 있으며, 연계할 사전 기술 없이 본 기술을 사용했을 경우에는 게임의 스크립트가 꼬여서 이후 사용하는 기술들이 정상적으로 발동되지 않는다. 그렇지만 반드시 사전 기술을 사용한 직후에 본 기술을 사용할 필요는 없으며, 중간에 다른 기술을 사용하여도 연계는 정상적으로 이루어진다.

임스가 사용할 수 있는 기술에는 1$1$~9$9$, 𝐿$L$, 𝑅$R$, 𝑆$S$, 𝐾$K$가 있다. 1$1$~9$9$는 연계 없이 사용할 수 있는 기술이고, 𝐿$L$은 𝑅$R$의 사전 기술, 𝑆$S$은 𝐾$K$의 사전 기술이다.

임스가 정해진 순서대로 𝑁$N$개의 기술을 사용할 때, 기술이 몇 번이나 정상적으로 발동하는지를 구해보자.

단, 연계 기술은 사전 기술과 본 기술 모두 정상적으로 발동되었을 때만 하나의 기술이 발동된 것으로 친다.

입력

첫 번째 줄에는 총 기술 사용 횟수 𝑁$N$이 주어진다. (1≤𝑁≤200000$1 \le N \le 200\,000$)

두 번째 줄에는 임스가 사용할 𝑁$N$개의 기술이 공백 없이 주어진다.

출력

임스가 정상적으로 기술을 사용한 총 횟수를 출력한다.

 


 

728x90
  1. 기술을 문자열로 저장한다.
  2. 총 기술 사용 횟수와 L, S 사용 횟수를 카운트한다.
  3. 기술 문자열을 순회하여 각 문자를 검사한다
    1. 숫자인 경우 count를 즉시 증가시킨다.
    2. 'L'인 경우 Lcount를, 'R'인 경우 Rcount를 증가시킨다.
    3. 'R'인 경우 (또는 'K')
      1. Lcount가 0보다 크면(사전 기술을 했으면) Lcount를 감소시키고 총 기술 사용 횟수를 1 증가시킨다.
      2. 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
'코딩테스트/백준-Java' 카테고리의 다른 글
  • [백준 자바] 2164번(카드 2) - 큐
  • [백준 자바] 2161번(카드 1) - 큐
  • [백준 자바] 10799번(쇠막대기)
  • [백준 자바] 2417번(정수 제곱근) - 큰 수 제곱근
gamzaggang7
gamzaggang7
abcdefghklpqrstuvwxyzgamzaggang7 님의 블로그입니다.
    250x250
  • gamzaggang7
    abcdefghklpqrstuvwxyz
    gamzaggang7
  • 전체
    오늘
    어제
    • 분류 전체보기
      • CS
        • OS
        • 자료구조_알고리즘
      • Java
      • Javascript
      • Node.js
      • React
      • Vue.js
      • 코딩테스트
        • 백준-Java
        • 프로그래머스-JS
      • Canvas
      • HTML, CSS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    라우팅
    프로그래머스
    vue modal
    서버구축
    fegaussianblur
    props
    Next.js
    오즈코딩스쿨
    npm
    해시
    자바스크립트
    vue animation
    BFS
    자바백준풀이
    Node.js
    vue.js
    자바
    React
    자바공부
    백준풀이
    정렬
    til
    2차원배열
    canvas
    큐
    css
    스택
    fecolormatrix
    hashchange
    dat.gui
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gamzaggang7
[백준 자바] 25497번(기술 연계마스터 임스)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.