Jae-Kyung Cho LLM Developers who was a Robotics engineer

Baekjoon-15778-Yut Nori

from re import L


N = int(input())

def countYut(string):
    yut = [5,1,2,3,4]
    count = 0
    for s in string:
        if s=='F':
            count += 1
    return yut[count]

def sameTeam(a):
    if a in 'abcd':
        return 'abcd'
    else:
        return 'ABCD'

def otherTeam(a):
    if a in 'abcd':
        return 'ABCD'
    else:
        return 'abcd'

course = [
    [23,24,25,20], # course 1
    [10,26,27,23,24,25,20], # course 2
    [5,21,22,23,28,29]+list(range(15,21)), # course 3
    list(range(21)), # course 4
]
status = {k: [0,3] for k in "ABCDabcd"} # pose, course
for _ in range(N):
    horse, yut_ = input().split()

    count = countYut(yut_)
    
    cur_pose, cur_course = status[horse]
    for idx,p in enumerate(course[cur_course]):
        if p == cur_pose:
            break
    
    if idx+count >= len(course[cur_course]):
        # finish
        next_pose = 30
        next_course = 4
    else:
        next_pose = course[cur_course][idx+count]
        # course 변경
        if next_pose == 5:
            next_course = 2
        elif next_pose == 10:
            next_course = 1
        elif next_pose == 23:
            next_course = 0
        else:
            next_course = cur_course

        # 말 잡기
        for oppo in otherTeam(horse):
            if status[oppo][0] == next_pose and status[oppo][1] != 4:
                status[oppo][0] = 0
                status[oppo][1] = 3

    status[horse][0] = next_pose
    status[horse][1] = next_course
    # 말 업기
    for mate in sameTeam(horse):
        if status[mate][0] == cur_pose and cur_pose != 0:
            status[mate][0] = next_pose
            status[mate][1] = next_course

# Print map
board_str = """
..----..----..----..----..----..
..    ..    ..    ..    ..    ..
| \                          / |
|  \                        /  |
|   \                      /   |
|    ..                  ..    |
..   ..                  ..   ..
..     \                /     ..
|       \              /       |
|        \            /        |
|         ..        ..         |
|         ..        ..         |
..          \      /          ..
..           \    /           ..
|             \  /             |
|              ..              |
|              ..              |
|             /  \             |
..           /    \           ..
..          /      \          ..
|         ..        ..         |
|         ..        ..         |
|        /            \        |
|       /              \       |
..     /                \     ..
..   ..                  ..   ..
|    ..                  ..    |
|   /                      \   |
|  /                        \  |
| /                          \ |
..    ..    ..    ..    ..    ..
..----..----..----..----..----..
"""
board = []
for line in board_str.strip().split('\n'):
    board.append([c for c in line])

pose_table = [
    [-1,-1],
    [24,30],[18,30],[12,30],[6,30],[0,30], # 1~5
    [0,24],[0,18],[0,12],[0,6],[0,0], # 6~10
    [6,0],[12,0],[18,0],[24,0],[30,0], # 11~15
    [30,6],[30,12],[30,18],[30,24],[30,30], # 16~20
    [5,25],[10,20],[15,15], # 21~23
    [20,20],[25,25], # 24~25
    [5,5],[10,10], # 26~27
    [20,10],[25,5], # 28~29
]
for horse, [dx,dy] in zip('abcd',[[0,0],[0,1],[1,0],[1,1]]):
    horses = [horse, horse.upper()]
    for h in horses:
        if status[h][0] != 0 and status[h][0] != 30:
            x,y = pose_table[status[h][0]]
            x += dx
            y += dy
            board[x][y] = h

for line in board:
    print(*line,sep='')
Comments