티스토리 뷰
1. 구현 개념 및 아이디어
개념: 머리속에 있는 알고리즘을 소스코드로 바꾸는 과정
구현: 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제
시뮬레이션: 일련의 명령에 따라서 개체를 차례대로 이동시킨다는 점(실제로 시뮬레이션 해보는 것)
완전탐색: 가능한 경우의 수를 모두 검사해보는 탐색방법
예시
- 알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제
- 실수 연산을 다루고, 특정 소수점까지 출력
- 문자열을 특정한 기준에 따라서 끊어 처리해야하는 문제
- 적절한 라이브러리를 찾아서 사용해야하는 문제
2. 예제
2차원 공간 문제에서 많이 쓰이는 행렬
예제1) 행렬
시뮬레이션 및 완전탐색 문제에서 자주 쓰이는 2차원 공간에서의 방향벡터
예제2) 방향 벡터
예제3) 상하좌우 문제
아이디어: 일련의 명령에 따라서 개체를 차례대로 이동시킨다는 점에서 시뮬레이션 유형으로 분류되며 구현이 중요하다.
예제4) 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 문제
아이디어: 가능한 모든 시각의 경우를 하나씩 모두 세서 풀 수 있는 문제 하루는 86400초이므로 경우는 86400 따라서 단순하게 1씩 증가 시켜 3이 하나라도 포함되어 있는지를 확인하면 된다. 이러한 유형을 완전 탐색 문제 유형이라고한다.
예제5) 왕실의 나이트 문제 나이트가 특정 위치에 있을 때 이동할 수 있는 경우의 수
아이디어: 나이트의 8가지 경로를 하나씩 확인하며 각 위치로 이동이 가능한지 확인한다. 리스트를 이용하여 8가지 방향에 대한 방향벡터를 정의한다.
예제6) 문자열 재정렬
아이디어: 문자열이 입력되었을 때 문자를 하나씩 확인하고 숫자인 경우 따로 합계를 계산하고 알파벳의 경우 별도의 리스트에 저장한다. 리스트에 저장된 알파벳을 정렬하여 출력하고, 합계를 뒤에 붙여 출력하자
'Algorithm > Algorithm with Python' 카테고리의 다른 글
[Algorithm] 6. 이진 탐색 알고리즘 (1) | 2025.05.08 |
---|---|
[Algorithm] 5. 다이나믹 프로그래밍 (0) | 2025.05.06 |
[Algorithm] 4. 그래프 탐색 알고리즘: DFS/BFS (0) | 2025.05.06 |
[Algorithm] 3. 그래프 탐색 알고리즘: DFS/BFS 배경지식 (1) | 2025.05.06 |
[Algorithm] 1. 그리디 (1) | 2025.05.06 |