본문 바로가기

728x90
반응형

Dev/ALGORITHM 알고리즘

[알고리즘] 소인수분해 | 프로그래머스 | 파이썬으로 소인수분해 하기 문제 설명 소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 2 ≤ n ≤ 10,000 입출력 예 n result 12 [2, 3] 17 [17] 420 [2, 3, 5, 7] 코드 def solution(n): i = 2 i_list = [] while i 더보기
[알고리즘] 탐색 | DFS (Depth-First Search) | 깊이 우선 탐색 | BFS (Breath First Search) | 너비 우선 탐색 | 스택, 큐, 재귀함수 탐색이란? 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 프로그래밍에서는 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다룸 대표적으로 DFS 알고리즘과 BFS 알고리즘이 있음 이를 위해서는 기본 자료구조인 스택과 큐, 그리고 재귀함수에 대한 이해가 먼저 필요하기 때문에, 해당 내용을 간략하게 설명하도록 하겠음 # 01 스택(Stack) 데이터를 차곡차곡 쌓는 구조 LIFO (Last In First Out), FILO (First In Last Out) 파이썬에서는 list 자료형을 그대로 이용하면 됨 stack = [] stack.append(5) stack.append(2) stack.append(3) stack.append(7) stack.pop() stack.append(1).. 더보기
[알고리즘] 구현이란? | 아이디어를 코드로 바꾸는 방법 | 완전 탐색 | 시뮬레이션 | 상하좌우| 시각 | 왕실의 나이트 | 게임개발 구현이란? 코딩 테스트에서 구현이란 '머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정' 사실상 어떤 문제를 풀든 간에 소스코드를 작성하는 과정은 필수이므로, 구현 문제 유형은 모든 범위의 문제 유형을 포함하는 개념이라고 할 수 있음 따라서 흔히 말하는 구현문제는 '풀이는 떠올렸지만 소스코드로 옮기기는 어려운 문제를 뜻함'! ex) 알고리즘은 간단하나, 소스코드가 지나칠만큼 길어지는 문제 - 특정 소수점 자리까지 출력해야하는 문제 - 문자열이 입력으로 주어졌을 대 한 문자 단위로 끊어서 리스트에 넣어야 하는(파싱을 해야하는) 문제 등 ... 대체로 사소한 조건이 많을수록, 코드로 구현하기가 까다로움 대표적으로 구현 내에는 완전 탐색이나, 시뮬레이션 유형을 구현 유형으로 포함하기도 함 ✔ 완전 탐색: 모든 .. 더보기
[알고리즘] 그리디 알고리즘이란? | Greedy Algorithm | 기초 예제 모음 (거스름돈, 큰 수의 법칙, 숫자 카드 게임, 1이 될 때 까지) 그리디 알고리즘이란? (a.k.a 탐욕법) 현재 상황에서 지금 당장 좋은 것만 고르는 방법 매 순간 가장 좋아보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않음 다른 유형들에 비해 비교적 외우고 있지 않아도 풀 수 있는 문제이지만, 그래도 출제의 폭이 넓은 편에 속함 기준에 따라 좋은 것을 선택하는 알고리즘으로 ‘가장 큰’ 혹은 ‘가장 작은’ 이라는 키워드를 함께 제시하면서 정렬 알고리즘과 짝을 이뤄 출제됨 대부분의 문제는 그리디 알고리즘을 이용했을 때 ‘최적의 해’를 찾을 수 없을 가능성이 다분함 → 따라서 문제 풀이를 위한 아이디어를 떠올리면, 이것이 정당한지 검토할 수 있어야 함 → 정당하지 않다면, 추후에 배울 다이나믹 프로그래밍이나 그래프 알고리즘 등으로 문제를 해결.. 더보기

728x90
반응형