TODAY TIL
안녕하세요! 오늘은 게임 내에서 연계 기술의 발동 조건을 다루는 흥미로운 문제를 풀어볼 거예요. 임스가 플레이 중인 게임에서는 몇 가지 규칙에 따라 기술이 발동됩니다:
- 연계 기술은 사전 기술과 본 기술의 조합입니다.
- 사전 기술 없이 본 기술을 사용하면 기술이 비정상적으로 발동됩니다.
- 사전 기술은 L, S, 본 기술은 R, K입니다.
- 숫자 1부터 9까지의 기술은 언제나 단독으로 발동할 수 있습니다.
예를 들어, L을 사용한 후에 R을 사용하면 정상 발동되지만, R만 있으면 발동되지 않아요.
문제 해결 아이디어
이 문제를 해결하려면, 사전 기술이 사용되었는지 확인하면서 본 기술이 발동될 수 있는지를 검토하면 됩니다.
주요 아이디어
- 사전 기술(L, S)이 나오면 리스트에 저장해두고, 본 기술(R, K)이 나올 때 이 리스트를 확인해 발동 여부를 결정합니다.
- 숫자 기술(1~9)은 특별한 조건 없이 바로 발동할 수 있습니다.
코드 설명
# 기술의 개수 입력받기 (사용하지 않지만 문제의 형식에 맞추어 필요)
N = int(input())
# 기술 순서를 문자열로 입력받고 리스트로 변환
skill = list(str(input()))
# 정상적으로 발동된 기술의 개수를 세는 변수
num = 0
# 사용된 사전 기술을 추적하는 리스트
used_list = []
# 기술을 하나씩 확인하며 발동 여부 판단
for i in skill:
# 사전 기술 'L' 또는 'S'가 나오면 used_list에 추가
if i == 'L' or i == 'S':
used_list.append(i)
# 본 기술 'K'가 나왔을 때
elif i == 'K':
# 사전 기술 'S'가 있다면 발동 가능
if 'S' in used_list:
used_list.remove('S') # 사용한 'S'는 리스트에서 제거
num += 1 # 발동된 기술 수 증가
else:
break # 사전 기술 없으면 반복 종료 (스크립트 꼬임)
# 본 기술 'R'이 나왔을 때
elif i == 'R':
# 사전 기술 'L'이 있다면 발동 가능
if 'L' in used_list:
used_list.remove('L') # 사용한 'L'은 리스트에서 제거
num += 1 # 발동된 기술 수 증가
else:
break # 사전 기술 없으면 반복 종료 (스크립트 꼬임)
# 숫자 기술 '1'~'9'는 조건 없이 발동 가능
else:
num += 1
# 최종 발동된 기술의 개수 출력
print(num)
설명
- L이 나오면 사전 기술로 저장됩니다.
- 1은 사전 기술이 필요 없는 숫자 기술이므로 바로 발동됩니다.
- S가 나오면 사전 기술로 저장됩니다.
- 2도 숫자 기술이라 바로 발동됩니다.
- R이 나오면 L이 사전 기술로 사용되었으므로 발동됩니다.
- K도 S가 사용된 상태이므로 발동됩니다.
발동된 기술은 총 4개입니다.
결론
이 문제는 리스트를 사용해 사전 기술의 사용 상태를 관리하면서 본 기술 발동 여부를 체크하는 방식으로 해결할 수 있었습니다. 코드의 각 부분을 이해하고, 예제를 실행해보며 학습하면 확실히 이해할 수 있을 거예요!
'python' 카테고리의 다른 글
99클럽 코테 스터디_4기 19일차 TIL (0) | 2024.11.16 |
---|---|
99클럽 코테 스터디_4기 18일차 TIL (7) | 2024.11.15 |
99클럽 코테 스터디_4기 16일차 TIL (1) | 2024.11.13 |
99클럽 코테 스터디_4기 15일차 TIL (1) | 2024.11.12 |
99클럽 코테 스터디_4기 14일차 TIL (0) | 2024.11.11 |