Programming/백준

백준 31844 - 창고지기 (파이썬)

pental 2025. 3. 16. 15:33

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

풀이

문제 이해를 하면 다음과 같다

  1. 문자열 S를 입력받기
  2. 변수 robot과 goal을 각각 -1로 초기화하고, order 리스트를 생성
  3. 문자열을 순회하며 다음을 수행
    1. '@', '#', '!' 문자일 경우, 이를 order 리스트에 추가
    2. '@'이면 robot에 해당 인덱스를 저장
    3. '!'이면 goal에 해당 인덱스를 저장
  4. 두 번째로 등장한 문자가 '#'인지 확인하고, 맞다면 robot과 goal 사이의 거리에서 1을 뺀 값을 출력
  5. 아니라면 -1을 출력한다.

코드

# 백준 31844 - 창고지기
# 분류 : 구현

S = input()

robot = -1
goal = -1
order = []
for i in range(len(S)) :
    if S[i] in ['@', '#', '!'] :
        order.append(S[i])
    if S[i] == '@' :
        robot = i
    if S[i] == '!' :
        goal = i

if order[1] == '#' :
    print(abs(robot - goal) - 1)
else :
    print(-1)