파이톨치

[백준] 1063 본문

카테고리 없음

[백준] 1063

파이톨치 2023. 2. 20. 15:30
728x90
king, stone, n = input().split()
n = int(n)
# R, L, B, T
# RT, LT, RB, LB
skip_R = ['R', 'RT', 'RB']
skip_L = ['L', 'LT', 'LB']
skip_B = ['B', 'RB', 'LB']
skip_T = ['T', 'RT', 'LT']
king = list(king)
stone = list(stone)
for i in range(n):
  move = input()
  
  # 1. 킹이 나가는 경우
  if king[0] == 'A' and move in skip_L:
    continue
  elif king[1] == '1' and move in skip_B: 
    continue
  elif king[0] == 'H' and move in skip_R:
    continue
  elif king[1] == '8' and move in skip_T:
    continue
  
  temp_king = king.copy(); temp_stone = stone.copy();
  # print(temp_king, temp_stone)
  
  # 2. 킹을 움직이는 경우 
  if move in skip_B:
    temp_king[1] = str(int(temp_king[1])-1)
  if move in skip_T:
    temp_king[1] = str(int(temp_king[1])+1)
  if move in skip_R:
    temp_king[0] = chr(ord(temp_king[0])+1)
  if move in skip_L:
    temp_king[0] = chr(ord(temp_king[0])-1)
  
  # 돌이랑 겹치는 경우
  if temp_king == temp_stone:
    # 돌이 나가는 경우
    if temp_stone[0] == 'A' and move in skip_L:
      continue
    elif temp_stone[1] == '1' and move in skip_B: 
      continue
    elif temp_stone[0] == 'H' and move in skip_R:
      continue
    elif temp_stone[1] == '8' and move in skip_T:
      continue 
    
    # 움직여
    if move in skip_B:
      temp_stone[1] = str(int(temp_stone[1])-1)
    if move in skip_T:
      temp_stone[1] = str(int(temp_stone[1])+1)
    if move in skip_R:
      temp_stone[0] = chr(ord(temp_stone[0])+1)
    if move in skip_L:
      temp_stone[0] = chr(ord(temp_stone[0])-1)
    
  # 모두 통과시
  # print(temp_king, temp_stone)
  stone = temp_stone
  king = temp_king

print("".join(king))
print("".join(stone))
728x90