본문 바로가기

Python

(37)
프로그래머스 - 정렬 - H-index 1. 문제의 출처 programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 2. 문제의 설명 (1) 문제의 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니..
탐색 알고리즘 - 순차 탐색(Sequential Search) 1. 순차 탐색(Sequential Search) 알고리즘이란? 2. 순차 탐색 구현 1. 순차 탐색(Sequential Search) 알고리즘이란? 탐색 알고리즘에서 가장 쉬운 알고리즘이라고 할 수 있는데요, 개념 자체가 정말 직관적입니다. 순차적으로 모든 인자들을 검색하다가, 원하는 데이터가 있으면 그 값을 반환하는 것입니다. 그래서 논리와 코드 구성도 굉장히 단조로운 편이죠. 2. 순차 탐색의 구현 (1) 손코딩을 통한 논리 구성 첫 번째. 원하는 데이터가 있는 경우 for i in range(데이터의 길이) if 데이터[ i ] == 원하는 데이터 값: return 인덱스, 원하는 값 두 번째. 원하는 데이터가 없는 경우 return "원하는 값이 없습니다." (2) 실제 코드 구현 1 2 3 4..
프로그래머스 - 정렬 - 가장 큰 수 1. 문제의 출처 - 프로그래머스 - 정렬 - K번째 수 programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 2. 문제의 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 ..
고급정렬2. 퀵정렬(Quick Sort) 완벽 마스터하기 1. 퀵정렬(Quick Sort)의 기본 개념 2. 예시를 통한 퀵정렬의 이해 3. 퀵정렬 구현하기 1. 퀵정렬(Quick Sort)의 기본 개념 (1) 퀵정렬의 기본 개념 퀵정렬은 하나의 기준점(pivot)을 정해서, 이보다 작은 것은 왼쪽으로 담고, 큰 것을 오른쪽으로 담는 함수입니다. 이 정렬이 재미있는 이유는 재귀함수를 통해서 구현한다는 점과 향후 학습할 이진트리함수나 다른 내용에서도 이해하는데 도움이 된다는 거에요. 이거는 나중에 다루기로 하겠습니다. 2. 예시를 통한 퀵정렬의 이해 (1) 예시 - [3, 9, 4, 2] 예시 데이터는 [3, 9, 4, 2]로 해보도록 하겠습니다. 기준점은 3으로 잡고, 이제 순차적으로 [9, 4, 2]를 비교해보죠. 첫 번째. 9의 경우 3보다 크기 때문에 오..
프로그래머스 - 정렬 - K번째수 1. 문제 출처 2. 문제 설명 3. 해답모음 - 다양한 정렬 함수의 활용을 통한 학습 1. 문제 출처 문제의 출처는 유명한 프로그래머스 사이트의 코딩테스트 연습 문제를 가져와봤습니다. 문제로 이동하기 2. 문제 설명 (1) Input의 설명 commands = 인덱싱 기준의 input array = 정렬 대상 리스트 (2) 문제의 핵심 - 정렬 방법 이 문제의 input은 굉장히 직관적이어서 이해하기 쉽습니다. 다만 여기서 핵심은 데이터를 정렬할 때 어떤 방식을 이용하여 데이터를 정렬하느냐 입니다. 저는 연습삼아서 기본 내장 함수를 포함하여, 퀵정렬, 버블 정렬, 병합 정렬 등을 이용해서 문제를 풀어보도록 하겠습니다. 3. 해답모음 - 다양한 정렬 함수의 활용을 통한 학습 (1) 내장함수를 이용한 해답..
고급정렬1. 병합정렬(Merge Sort) 완벽 마스터하기 1. 병합 정렬(Merge Sort)이란? 2. 병합정렬의 예시 및 원리 이해 3. 병합 정렬의 코드 구현 1. 병합 정렬(Merge Sort)이란? (1) 병합 정렬의 개념 1) 병합 정렬은 "재귀함수"를 이용한 정렬 알고리즘입니다. 2) 병합 정렬의 순서 - 데이터를 반으로 분리한다. - 데이터의 길이가 1이 될 때까지 계속 반복적으로 분리하다. (재귀함수를 이용) - 갈라진 리스트를 병합할 때, 순서에 맞게 정렬하여 병합한다. 이 원리를 이미지로 쉽게 이해해보면 아래의 그림과 같습니다. 이미지 원본 링크 설명만으로는 바로 이해하기 쉽지 않기 때문에 한 번 예시를 통해서 원리를 다시 한 번 이해해보도록 하겠습니다. 2. 병합정렬의 예시 및 원리 이해 (1) 예시 데이터: [1, 9, 3, 2] 1) ..
동적 계획법(DP)과 분할 정복 마스터하기 1. 동적 계획법과 분할 정복의 기본 개념 2. 피보나치 수열을 통한 동적 계획법과 분할 정복의 차이점 이해 1. 동적 계획법과 분할 정복의 기본 개념 (1) 동적 계획법( Dynamic Programming ) 1) 정의 : 입력 크기가 작은 부분 문제들을 해결한 후, 해당 부분 문제의 해를 활용해서, 보다 큰 크기의 부분 문제를 해결, 최종적으로 전체 문제를 해결하는 알고리즘입니다. 2) 특징 - Memorization의 기법 활용 : Memorization 기법이란 이전에 풀었던 문제의 정답이나 결과 값을 저장하여, 이후의 문제를 풀 때 다시 계산하지 않고, 미리 계산된 값을 불러와서 문제를 해결하는 방법입니다. 가장 쉽게 설명하면 문제를 세부적으로 나누어서 해결할 때 이전에 계산했던 결과를 재활용..
재귀함수의 완벽 이해 및 구현(Recursive Function) 1. 재귀함수의 기본 원리 2. 재귀함수의 기본 문제 연습 - 피보나치 수열 1. 재귀함수의 기본 원리 (1) 재귀함수의 정의 : 함수 안에 자신의 함수를 다시 호출하는 함수를 의미합니다. 이러한 재귀함수는 자신의 로직을 내부적으로 반복하다가, 일정한 조건이 만족되면 함수를 이탈하여 결과를 도출합니다. (2) 재귀함수의 기본적인 구현 방법 2가지 일반적으로 재귀함수는 2가지 형태로 표현될 수 있습니다. 우선 기본적인 표현식을 익히고, 간단한 예시를 통해서 그 원리를 이해해보도록 하겠습니다. 1) 첫 번째 재귀함수 표현 방법 1 2 3 4 5 def function(입력): if 입력 > 일정값: # 입력이 일정 값 이상이면 return function(입력 - 1) # 입력보다 작은 값 else: ret..

728x90
반응형