본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 3][Python] 3028번 : 창영마을

by 빛밤하늘 2021. 5. 22.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

3028번: 창영마을

첫째 줄에 정인이가 컵을 섞은 순서가 주어진다. 이 순서는 A, B, C중 하나이고, 문제에 있는 그림을 참고하면 된다. 정인이는 컵을 최대 50번 섞는다.

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin

# 첫째 줄에 정인이가 컵을 섞은 순서를 입력합니다.
# A, B, C로 구성되어 있으며 최대 50번 섞습니다.
# 가장 왼쪽의 \n은 없애줍니다.
shuffle = stdin.readline().rstrip()

# 컵들에서 공의 위치를 저장하는 리스트 변수를 선언합니다.
# 공이 있는 컵은 True로 표시합니다.
ball_state = [True, False, False]

# 컵을 섞는 순서 하나씩 반복해봅니다.
for method in shuffle:
    # A 방법대로 컵을 섞는다면
    if method == 'A':
        # 왼쪽의 컵과 중앙에 있는 컵을 바꿔줍니다.
        ball_state[0], ball_state[1] = ball_state[1], ball_state[0]
    # B 방법대로 컵을 섞는다면
    elif method == 'B':
        # 중앙에 있는 컵과 오른쪽에 있는 컵을 바꿔줍니다.
        ball_state[1], ball_state[2] = ball_state[2], ball_state[1]
    # C 방법대로 컵을 섞는다면
    else:
        # 왼쪽에 있는 컵과 오른쪽에 있는 컵을 바꿔줍니다.
        ball_state[0], ball_state[2] = ball_state[2], ball_state[0]

# 공이 있는 위치를 출력해줍니다.
print(ball_state.index(True) + 1)

결과

 

제출 후 맞았습니다 결과를 보고나서 다른 사람들의 파이썬 결과들을 보니

제가 제출한 코드의 실행 시간보다 근소하게 빠른 코드들이 매우 많았습니다.

쉬운 문제이지만 다른 사람들의 더 빠른 실행 시간의 코드를 공부해보고 새로 풀어봐야겠습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글