Algorithm 78

[Python] 프로그래머스 완전탐색 모의고사

프로그래머스 코딩테스트 연습문제 중 완전탐색 모의고사 문제 수포자가 찍는 방법을 반복되게 주어졌다. 1번은 1, 2, 3, 4, 5를 반복하고 2번은 2, 1, 2, 3, 2, 4, 2, 5를 반복 3번은 3, 3, 1, 1, 2, 2, 4, 4, 5, 5를 반복한다. 나는 큐 구조를 만들어 정답지 큐가 비어있기 전까지 1번부터 꺼내어 각각 수포자의 선택과 비교하고, 수포자의 답은 다시 큐에 Append하는 방식을 생각했다. from collections import deque def solution(answers): answer = [] queue = deque(answers) forgiven_1 = deque([1, 2, 3, 4, 5]) forgiven_2 = deque([2, 1, 2, 3, 2,..

Algorithm 2021.04.07

[Python] 정렬

정렬은 특정한 기준으로 나열한다. 선택정렬, 삽입정렬, 퀵정렬, 계수정렬 등 많은 정렬 방식이 있다. 선택정렬 주어진 리스트에서 가장 작은 데이터를 선택해 맨 앞 데이터와 교체, 그 다음 작은 데이터를 찾아 두번째 데이터와 교체하면서 정렬한다. for i in range(len(array)): min_idx = i#최소값 인덱스 for j in range(i+1, len(array)): if array[min_idx] > array[j]: # 최소값보다 작은 값을 찾음 min_idx = j array[i], array[min_idx] = array[min_idx], array[i] # swap 삽입정렬 데이터를 하나씩 확인하면서 각 데이터를 적절한 위치에 삽입한다. 구현할 때, 리스트를 읽으면서 왼쪽 데..

Algorithm 2021.04.04

[Python] DFS, BFS

DFS (깊이 우선 탐색)은 연결된 끝 노드까지 찾아가면서 탐색한다. 스택구조로 구현한다. (선입후출) def dfs(graph, v, visited): visitied[v] = True for i in graph[v]: if not visited[i]: dfs(graph, i, visited) 인자는 그래프, 현재 위치, 방문기록 리스트를 전달한다. 현재 위치를 방문처리하고, 그래프 (인접리스트)에서 방문하지 않은 곳이 있다면 그 노드에 대해서 DFS를 재귀함수 형식으로 불러온다. DFS는 덩어리 나누기, 지역 나누기와 같은 문제에 좋다. BFS (너비 우선 탐색)은 인접한 노드부터 탐색한다. 큐 구조로 구현한다. (선입선출) from collections import deque def bfs(grap..

Algorithm 2021.04.04

구현 문제

구현 문제는 머릿 속에 있는 알고리즘을 소스코드로 바꾸는 과정이다. 알고리즘은 간단한데 코드가 길어지는 문제구현 문제는 머릿 속에 있는 알고리즘을 소스코드로 바꾸는 과정이다. 알고리즘은 간단한데 코드가 길어지는 문제, 특정 소수점까지 출력해야하는 문제, 문자열 입력이 주어졌을 때, 한문자 단위로 끊어서 리스트에 넣어야 하는 문제 등이 까다로운 구현 문제에 속한다. 라이브러리 사용 경험이 부족하면 구현 유형의 문제를 풀 때 불리하다. '이것이 코딩테스트다' 책에서는 완전 탐색과 시뮬레이션 문제를 구현 문제로 정의했다. 완전탐색은 모든 경우의 수를 주저 없이 다 계산하는 해결 방법, 시뮬레이션은 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행하는 방식. 상하좌우 문제 상하좌우에 대한 리스트를 작성했..

Algorithm 2021.03.27
반응형