본문 바로가기

알고리즘25

[파이썬] 백준 24052 알고리즘 수업 삽입 정렬 2 백준 24052 알고리즘 수업 - 삽입 정렬 2☞ 백준 사이트 : https://www.acmicpc.net/problem/24052 삽입정렬 로직주어진 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여,자신의 위치를 찾아 삽입하는 정렬.▶ 삽입정렬 정의와 유사 문제 풀이는 이전 글 참고 [파이썬] 백준 24051 알고리즘 수업 삽입 정렬 1백준 24051 알고리즘 수업 - 삽입정렬 1☞ 백준 사이트 : https://www.acmicpc.net/problem/24051삽입정렬 이란주어진 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여,자신의 위yuneenelife.tistory.com풀이배열의 1번 index부터 마지막까지 반복한다.값을 맨 앞까지 이동하.. 2024. 7. 16.
[파이썬] 백준 24051 알고리즘 수업 삽입 정렬 1 백준 24051 알고리즘 수업 - 삽입정렬 1☞ 백준 사이트 : https://www.acmicpc.net/problem/24051삽입정렬 이란주어진 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여,자신의 위치를 찾아 삽입하는 정렬이다.선택정렬이나 버블정렬과 같은 알고리즘에 비해 빠르며, 안정적인 정렬 알고리즘이다.삽입정렬 풀이 순서[4, 5, 1, 3, 2]을 오름차순 정렬로 변경하는 경우[4, 5, 1, 3, 2]2번 index 1을 0번 index부터 비교.4 보다 작아 0번 index에 insert나머지 shift[1, 4, 5, 3, 2] 3번 index 3과 4 비교 insert나머지 shift[1, 3, 4, 5, 2] 4번 index 2와 3 비교 insert나머지.. 2024. 7. 12.
[파이썬] 백준 23969 알고리즘 수업 버블 정렬 2 백준 23969 알고리즘 수업 - 버블 정렬 2☞ 백준 사이트: https://www.acmicpc.net/problem/23969버블정렬 로직배열의 두 수(a, b)를 비교하면서 정렬시킴. 이를 반복▷ [7, 2, 0, 1, 5, 6, 4] 정렬 예시[7, 2, 0, 1, 5, 6, 4] 0번 index 7,2 비교 swap[2, 7, 0, 1, 5, 6, 4] 1번 index 7,0 비교 swap[2, 0, 7, 1, 5, 6, 4] 2번 index 7,1 비교 swap[2, 0, 1, 7, 5, 6, 4] 3번 index 7,5 비교 swap[2, 0, 1, 5, 7, 6, 4] 4번 index 7,6 비교 swap[2, 0, 1, 5, 6, 7, 4] 5번 index 7,4 비교 swap[2, 0.. 2024. 7. 3.
[파이썬] 백준 23968 알고리즘 수업 버블 정렬 1 백준 23968 알고리즘 수업 - 버블 정렬 1 문제 풀이☞ 백준 사이트 : https://www.acmicpc.net/problem/23968 버블정렬이란배열의 두 수(a, b)를 선택한 뒤, 두 수를 비교하여 정렬이 필요하면 swap, 아니면 pass 한다.위 작업을 계속 반복하는 것이 버블정렬이다.시간복잡도 O(n2)로 상당히 느린 반면, 코드가 단순하기 때문에 자주 사용된다.▶ 오름차순 정렬이면 a ▶ 내림차순 정렬이면 a > b 판단하여 정렬 [ 4, 6, 5, 1, 3, 2] 정렬 대상 리스트인 경우 정렬 순서,[ 4, 6, 5, 1, 3, 2] 4,6 은 정렬, 6,5는 미정렬 → 1번 index 6, 5 swap[ 4, 5, 6, 1, 3, 2] 2번 index 6, 1 swap[ 4, 5.. 2024. 7. 1.
[파이썬] 백준 23899 알고리즘 수업 선택 정렬 5 백준 23899 알고리즘 수업 - 선택 정렬 5 문제 풀이☞ 백준 사이트 : https://www.acmicpc.net/problem/23899 선택정렬 로직주어진 리스트 값 중에 최대값을 찾는다.그 값을 맨 뒤에 위치한 값과 swap 한다.위 작업을 반복한다.[3, 1, 2, 5, 4][3, 1, 2, 5, 4] 최대값 5, 4번 index와 swap[3, 1, 2, 4, 5] 최대값 4, 3번 index에 있으므로 pass[3, 1, 2, 4, 5] 최대값 3, 2번 index와 swap[2, 1, 3, 4, 5] 최대값 2, 1번 index와 swap[1, 2, 3, 4, 5] 정렬 완성▶ 선택정렬의 정의는 이전 글 참고 [파이썬] 백준 23881 알고리즘 수업 선택 정렬1백준 23881 알고리즘 .. 2024. 6. 28.
[파이썬] 백준 23881 알고리즘 수업 선택 정렬1 백준 23881 알고리즘 수업 - 선택 정렬 1 문제풀이선택 정렬이란주어진 리스트 값 중에 최소값을 찾는다.그 값을 맨 앞에 위치한 값과 swap 한다.위 작업을 반복한다.[3, 1, 2, 5, 4] 선택 정렬 순서[3, 1, 2, 5, 4] → 최소값 1, 0번 index와 swap[1, 3, 2, 5, 4] → 최소값 2, 1번 index와 swap[1, 2, 3, 5, 4] → 최소값 3, 2번 index에 있으므로 pass[1, 2, 3, 5, 4] → 최소값 4, 3번 index와 swap[1, 2, 3, 4, 5] → 정렬 완성백준 23881 문제에 있는 선택정렬 의사코드는 최대값에서 거꾸로 찾아가는 코드라서 아래와 같다.주어진 리스트 값 중에 최대값을 찾는다.그 값을 맨 뒤에 위치한 값과 s.. 2024. 6. 26.
[파이썬] 백준 1676 팩토리얼 0의 개수 (factorial n!) 백준 1676 팩토리얼 0의 개수 문제 풀이팩토리얼이란그 수보다 작거나 같은 모든 양의 정수의 곱이다.기호는 느낌표(!)를 쓰며 팩토리얼이라고 읽는다.1부터 n까지의 모든 자연수의 곱을 n에 상대하여 이르는 말.▷ 5! = 1×2×3×4×5 파이썬 팩토리얼 함수 사용수학모듈 math를 import 하여 factorial() 함수를 사용한다.math.factorial(n)만약 n이 정수형이 아니거나 음수인 경우 ValueError 발생한다.풀이입력된 숫자 N의 팩토리얼 수를 구한다.math 모듈의 factorial() 함수 활용한다.팩토리얼 수를 거꾸로 만든다.입력된 수가 10인 경우 팩토리얼 수는 36288003628800을 reverse 하면 0088263reverse 된 수를 반복하면서 0인 개수를 .. 2024. 6. 25.
[파이썬] 백준 6603 로또 (조합 combinations) 백준 6603 로또 문제 풀이링크 : https://www.acmicpc.net/problem/6603 이 문제는 파이썬의 조합 함수 활용해서 코딩할 수 있다.☞ 조합의 정의와 combinations 함수 활용은 이전 글 참고 [파이썬] 백준 2309 일곱 난쟁이 (조합 combination)백준 2309 일곱 난쟁이 문제 풀이https://www.acmicpc.net/problem/2309조합이란서로 다른 n개의 원소에서 (단, 0혹은 그 결과를 조합(combination)이라고 한다. ▶ 예시A, B, C 가 있을 때 2명으로 선택되는 가짓yuneenelife.tistory.com 풀이해당 문제는 파이썬(python)의 조합 함수를 활용해서 코딩한다.첫 번째 수 K와 K개의 수 집합 S에 포함되는 수.. 2024. 6. 24.
[파이썬] 백준 2309 일곱 난쟁이 (조합 combination) 백준 2309 일곱 난쟁이 문제 풀이https://www.acmicpc.net/problem/2309조합이란서로 다른 n개의 원소에서 (단, 0혹은 그 결과를 조합(combination)이라고 한다. ▶ 예시A, B, C 가 있을 때 2명으로 선택되는 가짓수는 얼마나 될까?(A, B), (A, C), (B, C) 로 총 3가지이고 이를 조합(combination)이라 한다. 여기서 중복을 허용하는 것은 순열(permutations)이다. 순열인 경우 총 6가지 가짓수가 나온다.('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B') ☞ 출처 조합combination / 組 合 서로 다른 개의 원소에서 (단, )개를 중복없이, 순서를 고.. 2024. 6. 21.
[파이썬] 백준 13706 이분탐색이란 백준 13706 문제풀이https://www.acmicpc.net/problem/13706이분탐색의 기본 원리전체 배열 중에 중간을 찾고,찾으려는 값이 중간 값보다 작으면, 중간에서 왼쪽으로 찾는다.배열의 end 값 변경찾으려는 값이 중간 값보다 크면, 중간에서 오른쪽으로 찾는다.배열의 start 값 변경위 1번에서 3번을 반복하여 값을 찾는다.이분탐색 전제조건전체 배열은 정렬되어 있다는 전제하에 진행한다. 이분탐색 기본 알고리즘 코드반복문과 재귀호출 방법이 있다.기본 알고리즘 코드를 숙지하고, 이후 상황에 맞게 적절히 수정하여 사용 ▶ 반복문#이분탐색 반복문def binary_search(target, data): data.sort() #data 정렬 먼저 start = 0 #배열의 맨 처.. 2024. 6. 19.