알고리즘(66)
-
백준 17298 파이썬 , 스택의 후입선출 성질 이용
백준 17298 : 오큰수 문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 답안 코드 : import sys n = int(sys.stdin.readline()) A = list(map(int, sys.stdin.readline().split())) ans = [-1] * n myStack = [] for i in range(n): while myStack and A[myStack[-1]] < A[i]: ans[myStack.pop()] = A[i]..
2024.02.13 -
탐색 알고리즘 정리
탐색 탐색은 주어진 데이터에서 자신이 원하는 데이터를 찾아내는 알고리즘을 말한다. 주어진 데이터의 성질(정렬 데이터 또는 비정렬 데이터)에 따라 적절한 탐색 알고리즘을 선택하는 것이 중요하고, 실제 모든 코딩 테스트 문제의 기본이 되는 알고리즘이므로 직접 구현해 원리를 완벽하게 이해하는 것이 중요하다. 탐색 영역에서는 그래프를 자주 탐색하므로 아래 저의 블로그를 참고하고 보면 좋을 것 같습니다. https://mkisos.tistory.com/entry/%EA%B7%B8%EB%9E%98%ED%94%84%EC%9D%98-%ED%91%9C%ED%98%84-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0 깊이 우선 탐색 깊이 ..
2024.02.11 -
그래프의 표현 (알고리즘, 자료구조)
그래프에 대해서 그래프는 노드와 에지로 구성된 집합이다. 노드는 데이터를 표현하는 단위이고 에지는 그 노드들을 연결한다. 그래프는 여러 알고리즘에 많이 사용되는 자료구조이므로 코딩 테스트에서 자주 볼 수 있다. 그래프를 구현하는 3가지 방법 1. 에지 리스트 2. 인접 행렬 3. 인접 리스트 2차원 리스트 생성 0으로 초기화한 행(row) 개수 3, 열(column) 개수 4인 2차원 리스트를 생성할 때 리스트를 객체를 생성하는 방법 -> 추천!!! A = [[0 for col in range(4)] for row in range (3)] 얕은 복사를 일으켜 생성하는 방법 A = [[0]*4]*3 # 이와 같은 방식으로 선언한 후 값을 변경하면 다른 원소의 값도 함께 변경될 수 있다. A= [[0]*4]..
2024.02.10 -
백준 1253 파이썬, 정렬 후 투 포인터 알고리즘
백준 1253 : 좋다 문제 https://www.acmicpc.net/problem/1253 1253번: 좋다 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) www.acmicpc.net 답안 코드 : import sys input = sys.stdin.readline N = int(input()) Result = 0 A = list(map(int, input().split())) A.sort() for k in range(N): find = A[k] i = int(0) j = int(N - 1) while i < j: # 투 포인터 알고리즘 if A[i] + A[j] == fin..
2024.02.07 -
정렬 알고리즘 (버블 정렬, 선택 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬, 기수 정렬)
정렬 알고리즘 정의를 내가 아는가? 정렬 알고리즘 정의 버블 데이터의 인접 요소끼리 비교, swap 연산을 수행하며 정렬 선택 대상에서 가장 크거나 작은 데이터를 찾아서 선택을 반복하며 정렬 삽입 대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬 퀵 pivot 값을 선정해 해당 값을 기준으로 정렬 병합 이미 정렬된 부분 집합들을 병합해 전체를 정렬 기수 데이터의 자릿수를 바탕으로 비교해 데이터를 정렬 버블 정렬의 핵심 이론 버블 정렬 (bubble sort)은 두 인접한 데이터의 크기를 비교해 정렬하는 방법입니다. 간단하게 구현할 순 있지만, 시간 복잡도는 O(n^2)으로 다른 정렬 알고리즘보다 속도가 느린 편입니다. 다음 그림과 같이 루프를 돌면서 인접한 데이터 간의 sw..
2024.02.07 -
백준 1940 파이썬 , 투 포인터 알고리즘
백준 1940 : 주몽 문제 https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 답안 코드 : import sys input = sys.stdin.readline N = int(input()) M = int(input()) A = list(map(int, input().split())) A.sort() count = int(0) i = int(0) j = int(N - 1) while i < j: if A[i] + A[j]..
2024.02.06