[코딩테스트] 프로그래머스 - 항해99클럽 코딩테스트 스터디 17일차 : 기술 연계마스터 임스

Co-Zi·2024년 11월 17일
0

99클럽TIL

목록 보기
6/15
post-thumbnail

해당 글은 항해99 클럽 코딩테스트 스터디에서 진행된 17일차(20241113) 비기너 문제에 대한
TIL(Today I Learned) 내용입니다.

	문제 출처) https://www.acmicpc.net/problem/25497
    

문제해결에 활용한 핵심포인트!

이 문제에서 주목해야할 부분은 다음과 같다.

조건1) 나의 사전 기술은 하나의 본 기술과만 연계해서 사용 가능하다.

조건2) 연계할 사전 기술 없이 본 기술을 사용했을 경우, 이후 사용하는 기술들이 정상적으로 발동되지 않는다.

조건3) 반드시 사전 기술을 사용한 직후에 본 기술을 사용할 필요는 없다.
(중간에 다른 기술을 사용하여도 연계는 정상적으로 이루어진다.)


조건1) "나의 사전 기술은 하나의 본 기술과만 연계해서 사용 가능하다." 해석

  • 사전 기술 과 본기술은 세트이다!
    -> 즉, 사전기술 사용을 기억해뒀다가, 후에 본기술 나오면 기억에서 제거하면서 answer++을 한다.
    -> Stack()과 pop()을 활용하면 좋다.

  • 즉, 사전기술이 나오면 이에 대해서 기억하고 있어야한다!

조건2) "연계할 사전 기술 없이 본 기술을 사용했을 경우, 이후 사용하는 기술들이 정상적으로 발동되지 않는다." 해석

  • 기술 연계 실패시, 이후는 정상 발동이 안된다했으므로 그 순간 종료해야 한다.

  • 이에 대해서는 반복문에서 해당조건일 때 break를 사용하면 된다.


조건3) "반드시 사전 기술을 사용한 직후에 본 기술을 사용할 필요는 없다." 해석

  • 결국, 사전 기술은 다른 기술들의 중간에 존재해도 괜찮다! 그저 있었다고 기억만 하면 된다.
    -> 스킬 L과 스킬 S 간 순서는 중요하지 않다.
    -> 스킬 L, S 사용에 대한 것(Stack사용예정)은 각각 따로 관리해도 괜찮다.

  • 중요한 것은, 본 기술이 있다면 그 이전에 그와 대응하는 사전기술을 사용했어야 한다.


참고 사항

  • 이외에 문자열에 포함된 특정 문자가 숫자인지에 대한 판단은
    toCharArray()와 Character.isDigit()을 활용하여 확인할 수 있다.
profile
한걸음 한걸음

0개의 댓글