문제 링크

문제 요약

8개의 밥그릇이 4행 2열 형태로 배치되어 있습니다. 그 중 맛있는 햄버거를 숨긴 밥 그릇의 초기 위치가 주어집니다.

이때, 신묘마루가 요술마치로 밥그릇을 섞는 기술 4가지가 주어집니다.

해당 기술을 모두 처리했을 때, 최종적으로 맛있는 햄버거가 있는 위치를 구해야 합니다.

풀이

별다른 방법은 없습니다. 주어지는 섞는 기술들을 간단하게 구현하면 됩니다. 정해진 방법은 없을 것 같고, 아래 정답 코드와 같이 함수를 잘 나누어 처리하면 더 명확하게 풀이할 수 있습니다.

정답 코드

inp = input()
mii = lambda : [*map(int,inp().split())]
ii = lambda : int(inp())
 
l = [[0] * 2 for _ in range(4)]
 
def cross_change(l, a, b):
  """X 자로 교차하여 교환하는 경우"""
  l[a][0], l[b][1] = l[b][1], l[a][0]
  l[a][1], l[b][0] = l[b][0], l[a][1]
  return l
 
def skill_a(l):
  return l[2:] + l[:2]
 
def skill_b(l):
  cross_change(l, 0, 1)
  cross_change(l, 2, 3)
  return l
 
def skill_c(l):
  cross_change(l, 0, 3)
  cross_change(l, 1, 2)
  return l
 
def skill_d(l):
  return [[l[1][0], l[0][0]], [l[2][0], l[0][1]], [l[3][0], l[1][1]], [l[3][1], l[2][1]]]
 
def solve():
  global l
  n, m = mii()
  l[n - 1][m - 1] = 1
 
  k = ii()
  s = inp()
 
  skills = {
      'A': skill_a,
      'B': skill_b,
      'C': skill_c,
      'D': skill_d
  }
  
  for action in s:
    l = skills[action](l)
 
  # 맛있는 햄버거가 있는 위치
  for i in range(4):
    for j in range(2):
      if l[i][j] == 1:
        p(i + 1, j + 1)
        return
 
 
solve()

연관 페이지

참고 문헌 / 사이트