반응형
해당 문제는 문제를 제대로 이해 못하고 엉뚱한 부분에서 막혀서 시간을 많이 소비했다ㅠㅠ
해당 문제를 풀 때 주의해야하는 점은
1. 돌이 킹이랑 매번 같이 움직이는 게 아닌 킹이 돌의 위치로 이동하게 되면 같이 이동해준다는 점
2. 만약에 움직였을 때 킹이 체스 판을 안나가고 돌만 나갈 경우 킹은 움직여줘야 한다는 점
이 두가지만 잘 이해해서 풀면된다.
그리고 막힌 에러 코드 부분은
move = input()
x,y = move_pos(move)
에서 typeerror: cannot unpack non-iterable nonetype object 에러가 떴는데
move = list(map(str,input().split()))
x,y = move_pos(move[0])
으로 수정해서 에러를 고칠 수 있었다.
다음과 같은 코드를 통해 통과하였다.
import sys
input = sys.stdin.readline
KP, SP, N = map(str, input().split())
def now_position_to_int(c):
if c[0] == 'A':
return 0
elif c[0] == 'B':
return 1
elif c[0] == 'C':
return 2
elif c[0] == 'D':
return 3
elif c[0] == 'E':
return 4
elif c[0] == 'F':
return 5
elif c[0] == 'G':
return 6
else:
return 7
def now_position_to_chr(c):
if c == 0:
return 'A'
elif c == 1:
return 'B'
elif c == 2:
return 'C'
elif c == 3:
return 'D'
elif c == 4:
return 'E'
elif c == 5:
return 'F'
elif c == 6:
return 'G'
else:
return 'H'
def move_pos(m):
if m == 'R':
return 1, 0
elif m == 'L':
return -1, 0
elif m == 'B':
return 0, -1
elif m == 'T':
return 0, 1
elif m == 'RT':
return 1, 1
elif m == 'LT':
return -1, 1
elif m == 'RB':
return 1, -1
elif m == 'LB':
return -1, -1
kpx, kpy = now_position_to_int(KP), (int(KP[1])-1)
spx, spy = now_position_to_int(SP), (int(SP[1])-1)
for i in range(int(N)):
move = list(map(str,input().split()))
x,y = move_pos(move[0])
ckpx, ckpy = kpx + int(x), kpy + int(y)
if 0 <= ckpx < 8 and 0 <= ckpy < 8:
if spx == ckpx and spy == ckpy:
cspx, cspy = spx + int(x), spy + int(y)
if 0 <= cspx < 8 and 0 <= cspy < 8:
kpx, kpy = ckpx, ckpy
spx, spy = cspx, cspy
else:
kpx, kpy = ckpx, ckpy
print(now_position_to_chr(kpx), end='')
print(kpy+1)
print(now_position_to_chr(spx), end='')
print(spy+1)
주요 코드는 길지 않지만 체스판 문자를 숫자로 / 숫자를 문자로 변환해주는 부분에서 코드 줄을 쓸데없이 많이 낭비하였는데 다른 분들은 딕셔너리를 사용해서 짧게 처리한 것을 보았다. 고로 딕셔너리 사용을 추천한다. 또한, 문제를 꼼꼼히 읽는 것은 언제나 중요한 것 같다.
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘/백준] 2777번 숫자 놀이 Python 파이썬 (0) | 2023.03.04 |
---|---|
[알고리즘/백준] 2621번 카드게임 Python 파이썬 (0) | 2023.02.26 |
[알고리즘/백준] 2578번 빙고 Python 파이썬 (0) | 2023.02.23 |
[알고리즘/백준] 2303번 숫자 게임 Python 파이썬 (0) | 2023.02.23 |
[알고리즘/백준] 1331번 나이트 투어 Python 파이썬 (2) | 2023.02.23 |
댓글