구현(Implementation)이란?
구현이란 문제풀이를 소스코드로 바꾸는 과정을 의미합니다. 일반적으로 구현 유형의 문제는 상대적으로 문제풀이 방법을 떠올리는 것보다 문제풀이 방법을 소스코드로 바꾸는 것이 더 어려운 경우를 지칭합니다. 따라서 구현 유형의 문제를 잘 해결하려면 해당 프로그래밍 언어에 대한 깊은 이해도와 다양한 라이브러리 활용 능력이 필요합니다.
구현문제 데이터 유형 예시는 다음과 같습니다.
- 알고리즘은 간단하지만 코드가 길어지는 문제
- 실수 연산을 다루고 특정 소수점까지 출력해야 하는 문제
- 문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제
- 적절한 라이브러리를 찾아서 활용하는 문제
행렬(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
'자료구조 & 알고리즘(Data Structure & Algorithm) > 알고리즘(Python)' 카테고리의 다른 글
동적계획법(Dynamic Programming) (0) | 2022.02.23 |
---|---|
순차 탐색 &이진 탐색 (0) | 2022.02.22 |
깊이우선탐색(DFS)/너비우선탐색(BFS) (0) | 2022.02.14 |
스택(Stack), 큐(Queue), 재귀(Recursion) (0) | 2022.02.14 |
그리디 알고리즘(Greedy Algorithm) (1) | 2021.07.29 |