개발자일걸요..?

13698번 Hawk eyes 본문

알고리즘코딩/Baekjoon Online Judge

13698번 Hawk eyes

Re_A 2021. 11. 4. 22:40
728x90
반응형

링크 : https://www.acmicpc.net/problem/13698

 

13698번: Hawk eyes

첫째 줄에 재열이가 컵을 섞는 순서가 주어진다. 이 순서는 위 그림에 있는 A, B, C, D, E, F 중 하나이다. 재열이는 컵을 최대 200번 섞는다.

www.acmicpc.net

 


 

문제

야바위를 잘하는 재열이는 축제기간동안 홍문관 앞에 부스를 열어 돈을 벌어보려 한다. 

재열이는 컵 네 개를 일렬로 탁자 위에 올려놓고, 가장 왼쪽 컵에 작은 공 하나, 가장 오른쪽 컵에 큰 공 하나를 넣어놓았다. 이제 재열이는 컵 2개의 위치를 바꿔가면서 여러 번 섞을 것이고, 모두 섞은 뒤에 상대방에게 어떤 컵에 공이 들어있는지 말하라고 할 것이다. 컵이 4개가 있을 때, 위치를 바꿀 수 있는 가능한 방법은 아래와 같이 6가지가 있다.

 

떼돈을 벌기 위해 3개월을 연습한 재열이에게 내기를 이길 수 있는 사람은 거의 없다.  그러나, 마침 엄청난 동체시력의 보유자 영범이 홍문관 앞을 지나고 있었다.  영범은 내기를 제안하고, 아무것도 모르는 재열이는 말없이 컵을 섞기 시작한다.  재열이의 손놀림이 아무리 빠르더라도, 영범이의 동체시력을 속일 수는 없다. 영범이는 동체시력뿐만 아니라, 기억력도 뛰어나서 재열이가 컵을 섞은 순서를 다 기억할 수 있다.  이것을 모르는 재열이의 운명은 당신이 작성할 프로그램에 달려있다.

재열이가 컵을 섞은 방법이 순서대로 주어질 때, 어떤 컵에 작은 공이 있는지, 어떤 컵에 큰 공이 있는지 차례대로 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 재열이가 컵을 섞는 순서가 주어진다. 이 순서는 위 그림에 있는 A, B, C, D, E, F 중 하나이다. 재열이는 컵을 최대 200번 섞는다.

출력

첫 번째 줄에는 작은 공이 있는 위치를, 두 번째 줄에는 큰 공이 있는 위치를 출력한다. 공의 위치는 가장 왼쪽부터 1, 2, 3, 4로 표시한다.  

예제 입력 1 

AB

예제 출력 1 

2

4

 


 

시뮬레이션 알고리즘 이용

-> 입력받은 알파벳들을 순서대로 돌아가며 해당하는 알파벳에 적합한 이동을 적용한다. 그 뒤, 큰공과 작은 공 위치 출력

 

입력 예제를 이용한 설명 

입력 예제 : "AB"

  1번 위치 2번 위치 3번 위치 4번 위치
default sb(작은 공) X X bb(큰 공)
A X sb X bb
B X sb X bb

작은 공 위치 -> 큰 공 위치 순으로 출력 : 2 4

 


 

작성한 코드

changeL = {'A':(0,1), 'B':(0,2), 'C':(0,3),
         'D':(1,2), 'E':(1,3), 'F':(2,3)}
cup = ['sb','o','o','bb']

locate = input()
for l in locate:
    temp = cup[changeL[l][0]]
    cup[changeL[l][0]] = cup[changeL[l][1]]
    cup[changeL[l][1]] =temp
print(cup.index('sb')+1)
print(cup.index('bb')+1)
반응형

'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글

1759번 암호 만들기  (0) 2021.11.05
14950번 3n+1수열  (0) 2021.11.04
4084번 Viva la Diferencia  (0) 2021.11.04
10812번 바구니 순서 바꾸기  (0) 2021.11.04
18870번 좌표 압축  (0) 2021.04.06
Comments