ALGORITHM/PYTHON

백준 BAEKJOON 25497번 기술 연계마스터 임스 [PYTHON/파이썬]

칼코
반응형

백준 BAEKJOON 25497번 기술 연계마스터 임스 [PYTHON/파이썬]


<문제 출처>

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

 

25497번: 기술 연계마스터 임스

$1$, $2$, $S$ - $K$, $2$로 스킬을 성공적으로 총 4번 사용했다.

www.acmicpc.net

백준 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)

 

반응형