[python]구현

한상욱·2023년 10월 26일
0

알고리즘 with python

목록 보기
9/13
post-thumbnail

들어가며

이글은 동빈나님의 이코테 강의를 보며 정리한 글입니다.

Implementation

구현(Implementation)이란 머릿속에서 생각하는 것을 직접 코드로 옮기는 행위를 의미합니다. 구현 알고리즘도 동일합니다. 구현 알고리즘 문제들은 풀이를 쉽게 떠올릴 수는 있지만, 직접 코드를 짜기는 어려운 문제들을 지칭합니다.

대부분의 구현 알고리즘 문제들은 아래와 같은 경우에 해당합니다.

  • 알고리즘은 간단한데 코드가 지나칠만큼 길어지는 문제
  • 실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제
  • 문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제
  • 적절한 라이브러리를 찾아서 사용해야 하는 문제

구현 예시

어떠한 여행자가 크기가 NN인 좌표내에서 계획에 따라서 움직인다고 하겠습니다. 각 계획서에서는 R이라면 오른쪽, L은 왼쪽, U는 위쪽, D는 아래쪽으로 움직인다고 하면 계획이 주어진 경우 여행자가 계획에 따라서 이동하여 목적지에 도착한다고 하겠습니다. 단, 계획서의 계획이 좌표를 벗어나면 해당방향으로는 움직이지 않습니다. 여기서, 도착지점의 좌표를 출력하면 됩니다.

이러한 경우 어떻게 구현할 수 있을까요?

이렇게 되면 직접 계획에 따라서 하나하나 확인하면서 이동하면 됩니다.

n = int(input()) # 좌표의 크기
plans = input().split()
x, y = 1, 1 # 시작점

# 상하좌우 이동 방향벡터
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
# 계획 타입
plan_types = ['U', 'D', 'L', 'R']

# 이동계획 확인하기
for plan in plans:
	# 계획에 따른 이동
    for i in range(4):
    	if plan == plan_types[i]:
        	nx, ny = x+dx[i], y+dy[i]
    # 좌표를 벗어나면 무시    
    if nx < 1 or nx > n or ny < 0 or ny > n:
    	continue
    
    # 이동
    x, y = nx, ny
print(x, y)

다만, 계획대로 이동하여도 좌표를 벗어나면 안되기 때문에 해당하는 경우에 continue를 이용해서 생략할 수 있습니다.

profile
자기주도적, 지속 성장하는 모바일앱 개발자가 되기 위해

0개의 댓글

관련 채용 정보