자료구조 & 알고리즘(Data Structure & Algorithm)/알고리즘(Python)

구현(Implementation)

Itscool 2021. 8. 3. 11:26

구현(Implementation)이란?

구현이란 문제풀이를 소스코드로 바꾸는 과정을 의미합니다. 일반적으로 구현 유형의 문제는 상대적으로 문제풀이 방법을 떠올리는 것보다 문제풀이 방법을 소스코드로 바꾸는 것이 더 어려운 경우를 지칭합니다. 따라서 구현 유형의 문제를 잘 해결하려면 해당 프로그래밍 언어에 대한 깊은 이해도와 다양한 라이브러리 활용 능력이 필요합니다. 

 

구현문제 데이터 유형 예시는 다음과 같습니다.

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

행렬(Matrix)

  • 일반적으로 알고리즘 문제에서 2차원 공간은 행렬(matrix)로 표현할 수 있습니다. 
(0 , 0) (0 , 1) (0 , 2) (0 , 3) (0 , 4)
(1 , 0) (1 , 1) (1 , 2) (1 , 3) (1 , 4)
(2 , 0) (2 , 1) (2 , 2) (2 , 3) (2 , 4)
(3 , 0) (3 , 1) (3 , 2) (3 , 3) (3 , 4)
(4 , 0) (4 , 1) (4 , 2) (4 , 3) (4 , 4)

 

위 행렬을 파이썬 소스코드로 구현하면 다음과 같습니다.

row, col = 5, 5
matrix = [[] for i in range(row)]

for i in range(row):
    for j in range(col):
        matrix[i].append((i, j))

print(matrix)


# 출력값
# => [
# [(0, 0), (0, 1), (0, 2), (0, 3), (0, 4)],
# [(1, 0), (1, 1), (1, 2), (1, 3), (1, 4)],
# [(2, 0), (2, 1), (2, 2), (2, 3), (2, 4)], 
# [(3, 0), (3, 1), (3, 2), (3, 3), (3, 4)],
# [(4, 0), (4, 1), (4, 2), (4, 3), (4, 4)]
# ]

벡터(Vector)

  • 시뮬레이션, 완전 탐색 등의 문제에서는 2차원 공간에서의 공간벡터가 자주 활용됩니다. 

 

 

기준점에서 동, 북, 서, 남 방향으로 이동했을 때의 좌표를 출력하는 파이썬 코드는 다음과 같습니다. 

# 동, 북, 서, 남
dx = [0, -1, 0, 1]
dy = [1, 0, -1, 0]

# 현재 위치
x, y = 2, 2

for i in range(4):
    # 다음 위치
    nx = x + dx[i]
    ny = y + dy[i]
    print(nx, ny)2