[TIL-24/11/13] 99클럽 코테 스터디 17일차 TIL 백준 25497번 : 기술 연계마스터 임스 - 자바

2024. 11. 13. 21:38·TIL
목차
  1. 오늘의 학습 키워드
  2. 공부한 내용 본인의 언어로 정리하기
  3. 오늘의 회고

오늘의 학습 키워드

https://www.acmicpc.net/problem/25497

백준 25497번: 기술 연계마스터 임스(실버5) - 자바

 

  1. 완주하지 못

공부한 내용 본인의 언어로 정리하기

문자답안

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        String inputs = br.readLine();

        Stack<Character> sStack = new Stack<>(); // 'S' 사전 기술을 위한 스택
        Stack<Character> lStack = new Stack<>(); // 'L' 사전 기술을 위한 스택
        int count = 0;

        for (char ch : inputs.toCharArray()) {
            if (ch == 'L') {
                // 'L' 기술이 들어오면 lStack에 추가
                lStack.push(ch);
            } else if (ch == 'S') {
                // 'S' 기술이 들어오면 sStack에 추가
                sStack.push(ch);
            } else if (ch == 'R') {
                // 'R' 기술이 들어왔을 때, lStack에 'L'이 있는지 확인
                if (!lStack.isEmpty()) {
                    lStack.pop(); // 'L'을 사용하여 'R'과 연계 발동
                    count++;
                } else {
                    break; // 'L' 없이 'R'이 나오면 이후 기술 발동 중지
                }
            } else if (ch == 'K') {
                // 'K' 기술이 들어왔을 때, sStack에 'S'가 있는지 확인
                if (!sStack.isEmpty()) {
                    sStack.pop(); // 'S'를 사용하여 'K'와 연계 발동
                    count++;
                } else {
                    break; // 'S' 없이 'K'가 나오면 이후 기술 발동 중지
                }
            } else {
                // 숫자 기술은 연계 없이 단독 발동 가능
                count++;
            }
        }

        System.out.println(count);
    }
}

 

문제 해석

이 문제는 문제의 난이도보다 문제의 조건을 이해하는 것이 중요하다. 다음은 문제의 조건이다.

  • 연계 기술은 두 개의 개별 기술을 순서대로 사용해야만 정상적으로 사용 가능하다.
  • 연계할 사전 기술 없이 본 기술을 사용 시 이후 사용하는 기술들은 정상적으로 발동되지 않는다.
  • 1~9는 연계 기술 없이 사용 가능하며, L은 R의 사전 기술, S은 K의 사전 기술이다.

일단 나같은 경우는 스택을 활용하여 문제를 해결하였다. 

스택은 두 개를 활용하였고 사전 기술을 보관하는 용도이다. 

Stack<Character> sStack = new Stack<>(); // 'S' 사전 기술을 위한 스택
Stack<Character> lStack = new Stack<>(); // 'L' 사전 기술을 위한 스택

 

문자열 반복문을 진행하면서 사전 기술은 L과 S에 대하여 스택을 add 시켜준다.

for (char ch : inputs.toCharArray()) {
        if (ch == 'L') {
            // 'L' 기술이 들어오면 lStack에 추가
            lStack.push(ch);
        } else if (ch == 'S') {
            // 'S' 기술이 들어오면 sStack에 추가
            sStack.push(ch);
        }

        ...
}

 

그럼 다음 본 기술은 R과 K 조건을 봐야하는데 위 조건 중 두번째 조건을 넣어줘야한다. 

R이 있을때는 사전 기술인 L이 있는 것을 확인해야 하고  사전 기술 없이 R이 나온다면  이후 기술은 방동 금지된다. (반복문을 나가야 한다.) 

else if (ch == 'R') {
    // 'R' 기술이 들어왔을 때, lStack에 'L'이 있는지 확인
    if (!lStack.isEmpty()) {
        lStack.pop(); // 'L'을 사용하여 'R'과 연계 발동
        count++;
    } else {
        break; // 'L' 없이 'R'이 나오면 이후 기술 발동 중지
    }
} else if (ch == 'K') {
    // 'K' 기술이 들어왔을 때, sStack에 'S'가 있는지 확인
    if (!sStack.isEmpty()) {
        sStack.pop(); // 'S'를 사용하여 'K'와 연계 발동
        count++;
    } else {
        break; // 'S' 없이 'K'가 나오면 이후 기술 발동 중지
    }
}

 

오늘의 회고

오늘 부터 항해99에서 하는 부트캠프를 참가하고 있다. 그 부트캠프도 3주동안 코테를 연습하는데 이번 기회에 코테를 마스터하고 가야될 것 같다.

 

  1. 완주하지 
저작자표시 (새창열림)

'TIL' 카테고리의 다른 글

[TIL-24/11/15] 99클럽 코테 스터디 19일차 TIL 백준 1927번 : 최소 힙 - 자바  (0) 2024.11.16
[TIL-24/11/14] 99클럽 코테 스터디 18일차 TIL 백준 26042번 : 식당 입구 대기 줄 - 자바  (1) 2024.11.15
[TIL-24/11/12] 99클럽 코테 스터디 16일차 TIL 백준 2161번 : 카드1 - 자바  (1) 2024.11.12
[TIL-24/11/10] 99클럽 코테 스터디 14일차 TIL 백준 10845번 : 큐 - 자바  (1) 2024.11.11
[TIL-24/11/09] 99클럽 코테 스터디 13일차 TIL - 단어순서 뒤집기 -JAVA  (1) 2024.11.10
  1. 오늘의 학습 키워드
  2. 공부한 내용 본인의 언어로 정리하기
  3. 오늘의 회고
'TIL' 카테고리의 다른 글
  • [TIL-24/11/15] 99클럽 코테 스터디 19일차 TIL 백준 1927번 : 최소 힙 - 자바
  • [TIL-24/11/14] 99클럽 코테 스터디 18일차 TIL 백준 26042번 : 식당 입구 대기 줄 - 자바
  • [TIL-24/11/12] 99클럽 코테 스터디 16일차 TIL 백준 2161번 : 카드1 - 자바
  • [TIL-24/11/10] 99클럽 코테 스터디 14일차 TIL 백준 10845번 : 큐 - 자바
JH_DEV77
JH_DEV77
초보 개발자의 공부 블로그입니다.
JH’s 개발블로그초보 개발자의 공부 블로그입니다.
JH_DEV77
JH’s 개발블로그
JH_DEV77
전체
오늘
어제
  • 분류 전체보기 (231)
    • 코딩테스트 (43)
      • 이론 (12)
      • 인프런강의 (1)
      • 백준 (28)
      • 프로그래머스 (1)
    • Language (37)
      • TDD, 클린코드, 리펙토링 (5)
      • Java (32)
    • Framework (28)
      • Spring (15)
      • JPA (13)
    • DB (3)
    • Trouble Shooting (10)
    • DevOps (3)
      • Docker (3)
    • Knowledge (58)
      • 네트워크 (15)
      • 컴퓨터구조&운영체제 (31)
      • 자료구조 (6)
      • 개발지식 (6)
    • 프로젝트&부트캠프 (20)
      • 패스트캠퍼스x야놀자 백엔드과정 (4)
      • 넘블-딥다이브 (1)
      • 스진초5기 (4)
      • 향해 플러스 백엔드 4기 (4)
      • 인프런 워밍업 클럽 1기 (2)
      • 선착순구매프로젝트 (1)
      • f-lab 백엔드 멘토링 과정 (3)
    • TIL (28)
    • 회사생활 (0)
      • 중국출장기 (0)

블로그 메뉴

  • 홈
  • 글쓰기

공지사항

인기 글

태그

  • 항해플러스
  • 국비지원취업
  • 티스토리챌린지
  • Java
  • 코딩테스트
  • 항해99
  • 코딩테스트 준비
  • 개발자취업
  • 스진초
  • 객체지향
  • 99클럽
  • 스프링 핵심가이드
  • 패스트캠퍼스
  • 백엔드개발자
  • 향해99
  • 코딩테스트준비
  • 오블완
  • til
  • 부트캠프
  • 국비지원

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
JH_DEV77
[TIL-24/11/13] 99클럽 코테 스터디 17일차 TIL 백준 25497번 : 기술 연계마스터 임스 - 자바
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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