반응형
백준 BAEKJOON 25497번 기술 연계마스터 임스 [PYTHON/파이썬]
<문제 출처>
https://www.acmicpc.net/problem/25497
<풀이>
문제의 조건을 제대로 이해하지 못해서 여러 번 틀렸던 문제이다.
'하나의 사전 기술은 하나의 본 기술과만 연계해서 사용할 수 있으며, 연계할 사전 기술 없이 본 기술을 사용했을 경우에는 게임의 스크립트가 꼬여서 이후 사용하는 기술들이 정상적으로 발동되지 않는다. 그렇지만 반드시 사전 기술을 사용한 직후에 본 기술을 사용할 필요는 없으며, 중간에 다른 기술을 사용하여도 연계는 정상적으로 이루어진다.'
위의 조건을 정리하면
1. 하나의 사전 기술은 하나의 본 기술과만 연계해서 사용한다.
2. 연계할 사전 기술 없이 본 기술을 사용했을 경우 이후에 사용하는 기술들이 정상적으로 발동되지 않는다.
3. 반드시 사전 기술을 사용한 직후에 본 기술을 사용할 필요는 없다.
4. 중간에 다른 기술을 사용하여도 연계는 정상적으로 이루어진다.
나는 2번 조건을 제대로 이해하지 못했었다.
예를 들어 입력으로 N=5, R1234 주어진다면 R은 본 기술이고 사전 기술인 L이 필요한데
이런 경우는 뒤에 4번이나 사용할 수 있는 1234 기술들 또한 사용하지 못한다는 얘기가 된다.
결과적으로 출력된 값은 0이 된다는 얘기다.
<코드>
N = int(input())
skill = input()
cnt = 0 # 사용한 기술 총 횟수
Ls, Ss = 0, 0 # 사전 기술 L,S 의 사용 횟수
for i in skill :
if i == 'L' : # 사전 기술 L
Ls += 1
elif i == 'R' : # 본 기술 R
if Ls > 0 : # L의 사용 횟수가 0보다 크면
cnt += 1 # 총 횟수 +1
Ls -= 1 # L의 횟수 -1
else : # 그게 아니라면 break
break
elif i == 'S' : # 사전 기술 S
Ss += 1
elif i == 'K' : # 본 기술 K
if Ss > 0 : # S의 사용 횟수가 0보다 크면
cnt += 1 # 총 횟수 +1
Ss -= 1 # S의 횟수 -1
else : # 그게 아니라면 break
break
else : # 1~9의 기술
cnt += 1
print(cnt)
반응형
'ALGORITHM > PYTHON' 카테고리의 다른 글
백준 BAEKJOON 7600번 문자가 몇갤까 [PYTHON/파이썬] (0) | 2022.11.06 |
---|---|
백준 BAEKJOON 2501번 약수 구하기 [PYTHON/파이썬] (0) | 2022.11.05 |
백준 BAEKJOON 25644번 최대 상승 [PYTHON/파이썬] (0) | 2022.11.03 |
백준 BAEKJOON 21965번 드높은 남산 위에 우뚝 선 [PYTHON/파이썬] (0) | 2022.11.02 |
백준 BAEKJOON 25904번 안녕 클레오파트라 세상에서 제일가는 포테이토칩 [PYTHON/파이썬] (0) | 2022.11.01 |