알고리즘 5

자료구조의 소개(자료구조, 알고리즘, 데이터 추상화)

프로그램 = 자료구조 + 알고리즘 프로그램의 자료구조와 알고리즘으로 만들어진다. 그러므로 개발자가 효율적인 프로그램을 작성하기 위해서는 자료구조란 무엇이고 어떤 종류가 있는지, 어떻게 하면 효율적인 알고리즘을 구현할 수 있을지를 고민해야 한다. 또한, 이 둘의 설명과 더불어 크고 복잡한 문제를 단순화시킬 수 있는 데이터 추상화 개념을 숙지해야 한다. 자료 구조란? 자료구조란 자료를 효율적으로 사용하기 위해 자료의 특성에 따라 분류하고 구성, 저장, 처리하는 모든 작업이다. 알고리즘이란? 알고리즘이란 특정한 일을 수행하기 위한 명령어의 유한 집합을 말한다. 기준 입력: (외부)원인 >= 1 출력: 결과 >= 1 명백성: 모호하지 않은 명확한 명령 유한성: 한정된 수의 단계 후에는 반드시 종료 유효성: 각 ..

자료구조 2023.04.10

6가지 대표적인 정렬 알고리즘(Sorting Algorithm)

정렬이란, 자료형이 같은 데이터들의 집합을 대소관계에 따라 줄지어 나열하는 것이다. 알고리즘은 보다 효율적인 데이터 관리를 하는 것이 목적이다. 정렬은 그러한 알고리즘의 목적 달성을 돕는 가장 기본적이고 중요한 알고리즘이다. 데이터 탐색의 대표적인 방법에는 선형검색과 이분검색이 있는데, 이 중 이분검색을 위해서는 사전에 데이터 집합의 정렬이 반드시 필요하다. 정렬 알고리즘의 개요 1. 내부 정렬과 외부 정렬 - 내부 정렬: 정렬한 자료를 주기억장치에 저장된 상태에서 정렬 - 외부 정렬: 외부 기억장치(하드 디스크)에 대부분의 데이터가 있고, 그 중 일부만 주기억장치에 저장된 상태에서 정렬 2. 정렬 알고리즘의 종류 - 단순하지만 비효율적: 버블 정렬(Bubble sort), 선택 정렬(Selection ..

알고리즘 2022.12.29

[프로그래머스 Level2] 숫자 카드 나누기 - 파이썬(Python)

https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 철수와 영희는 선생님으로부터 숫자가 하나씩 적힌 카드들을 절반씩 나눠서 가진 후, 다음 두 조건 중 하나를 만족하는 가장 큰 양의 정수 a의 값을 구하려고 합니다. 철수가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고 영희가 가진 카드들에 적힌 모든 숫자들 중 하나도 나눌 수 없는 양의 정수 a 영희가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고, 철수가 가진 카드들에 적힌 모든 숫..

약수 개수 구하기 / 소수 확인 알고리즘

약수 구하기 알고리즘 1. 1~자연수 n의 제곱근 중 n과 나누어떨어지는 개수 구하기 - 단, n의 제곱근의 제곱이 n인 것은 포함하지 않는다. 2. 해당 개수 * 2 3. 만약, n의 제곱근의 제곱이 n인 것이 있다면 개수에 1을 더한다. cnt = 0 for i in range(1, n + 1): if i * i >= n: cnt *= 2 if i * i == n: cnt += 1 break if n % i == 0: cnt += 1 print(cnt) # 자연수 n의 약수의 개수 OR data = [0] + [1] * e for i in range(2, e + 1): for j in range(i, e + 1, i): data[j] += 1 소수 확인 알고리즘 1. 자연수 n은 2이상이어야 한다. ..

알고리즘 2022.11.20
728x90