Algorithm 97

정렬 알고리즘 [선택 정렬, 삽입 정렬, 퀵 정렬, 계수 정렬]

1. 선택 정렬 (selection sort) 첫 번째 값을 두 번째 값부터 마지막 값까지 차례대로 비교해 가장 작은 값을 찾아 첫 번째 값과 자리 변경하고, 두 번째 값을 세 번째 값부터 마지막 값까지 차례대로 비교해 가장 작은 값을 찾아 두 번째 값과 자리 변경.. 이 과정을 반복하며 정렬을 수행한다. 시간복잡도 O(N^2) array = [7,5,9,0,3,1,6,2,4,8] for i in range(len(array)): min_index = i # 가장 작은 원소의 인덱스 for j in range(i+1, len(array)): if array[min_index] > array[j]: min_index = j # 스와프 array[i], array[min_index] = array[min_i..

Algorithm/algorithm 2022.08.16

[프로그래머스] 체육복 (탐욕법 Greedy)

문제 url: https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n, lost, reserve): # 오름차순으로 정렬 lost.sort() reserve.sort() # 차집합을 이용해 여벌옷이 있는데 도난당했을 경우 제외 new_lost = set(lost) - set(reserve) new_reserve = set(reserve) - set(lost) for r in new_reserve: if r - 1 in new..

Algorithm/Problems 2022.08.16

[백준] 2675번 문자열 반복

문제 링크: https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net n = int(input()) for i in range(n): str = input().split() list_s = list(str[1]) num = int(str[0]) # 각 문자 반복 횟수 for j in range(len(list_s)): for k in range(num): print(list_s[j], end="") print() 문자열이 입력된 것을 list로..

Algorithm/Problems 2022.08.11

[프로그래머스] 타겟 넘버 (DFS/BFS)

코딩테스트 공부하기로 마음먹고 처음 풀어본 문제다. 하지만.. 결과는 처.참.했.다. 검색을 해보니 DFS/BFS 문제로 푼다고 한다. 둘 중 스택을 이용한 DFS로 풀이 하는 것으로 이해했고 풀이했다. 문제 2번째 예시인 numbers가 [4,1,2,1] 인 경우를 생각해봤다. def solution(numbers, target): answer = 0 n = len(numbers) # temp, idx 값을 의미 stack = [[numbers[0], 0], [-1*numbers[0], 0]] while stack: temp, idx = stack.pop() idx += 1 if idx < n: stack.append([temp+numbers[idx], idx]) stack.append([temp-nu..

Algorithm/Problems 2022.08.02

n개의 수 중 최솟값 찾기

#include #define SIZE 100 int findmin(int arr[],int n,int min); int main(){ int n; int arr[SIZE]={0,}; int i, min; scanf("%d",&n); for(i=0;iarr[n-1]){ min=arr[n-1]; findmin(arr,n-1,min); } else { findmin(arr,n-1,min); } } } n개의 정수를 입력받은 후에 재귀함수를 이용하여 최솟값을 찾는 함수이다. for문으로 쉽게 구할 수 있지만 평소에 잘 쓰지 않았던 재귀함수를 이용하려니 어려웠다..

Algorithm/Problems 2020.04.10