코팅테스트/코딩테스트 이론 정리
2. 구현(Implementation) 이론
유지광이
2021. 8. 12. 17:38
728x90
코딩테스트에서 구현이란?
-> dx= [0,-1,0,1] dy=[1,0,-1,0] -> x는 행 , y는 열로 보면된다. 동쪽으로 갈때는 (0,1) 이 되는데, 행은 이동하지않고 열만 오른쪽으로 한칸 이동해야하기 때문에 (0,1)이 나온다. 북쪽은 (-1,0) 이 되는데, 행을 오른쪽 한칸 올리고 열을 가만히 냅두면 된다.
구현 대표적 문제1
나의 코드
n = int(input())
data = list(map(str,input().split()))
nx = 1
ny = 1
dx = [0,-1,0,1] #동,북,서,남 #R U L D
dy = [1,0,-1,0] #동,북,서,남 #R U L D
for i in range(len(data)):
if(data[i] == "R"): # data[i] 가 "R" 이라면
nx += dx[0]
ny += dy[0]
if ny == 0 or ny == n+1: # 단,ny가 0이거나 n의크기보다 커지면
ny -= 1 #다시 더했던 것을 빼준다.
elif (data[i] == "U"):
nx += dx[1]
ny += dy[1]
if nx == 0 or nx == n+1:
nx += 1
elif (data[i] == "L"):
nx += dx[2]
ny += dy[2]
if ny == 0 or ny == n + 1:
ny += 1
elif (data[i] == "D"):
nx += dx[3]
ny += dy[3]
if nx == 0 or nx == n + 1:
nx -= 1
print(nx,ny)
정답 코드
#N 입력받기
n = int(input())
x,y = 1,1 #시작점 좌표
plans = input().split()
# L, R, U, D 에 따른 이동방향
dx = [0,0,-1,1]
dy = [-1,1,0,0]
move_types = ['L','R','U','D']
#이동 계획을 하나씩 확인하기
for plan in plans:
for i in range(len(move_types)): # 이동 후 좌표구하기
if plan == move_types[i]:
nx = x + dx[i]
ny = y + dy[i]
#공간을 벗어나는 경우 무시
if nx < 1 or nx > n or ny < 1 or ny > n:
continue
#이동 수행
x, y = nx, ny
print(x,y)
728x90