본문 바로가기
반응형

Programming/알고리즘35

[백준 / Python] 1015번 수열 정렬 문제 https://www.acmicpc.net/problem/1015 1015번: 수열 정렬 P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주 www.acmicpc.net 풀이 n = int(input()) data = list(map(int, input().split())) sortdata = sorted(data) answer = [0] * n for i in range(n): answer[i] = sortdata.index(data[i]) sortdata[sortdata.index(data[i])] =.. 2024. 3. 28.
[백준/Python] 17219번 비밀번호 찾기 문제 https://www.acmicpc.net/problem/17219 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net 풀이 import sys N, M = map(int, input().split()) passwd = {} for i in range(N): a = sys.stdin.readline().rstrip().split() passwd[a[0]] = a[1] for i in range(M): a = sys.stdin.readline().rstrip() print(pass.. 2024. 2. 27.
[백준/Python] 9659번 돌 게임 5 문제 [백준/Python] 9659번 돌 게임 5 https://www.acmicpc.net/problem/9659 9659번: 돌 게임 5 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 1,000,000,000,000) www.acmicpc.net 소스코드 n = int(input()) if n % 2 == 1: print('SK') else: print('CY') 게임을 계산해보면 n이 홀수일때는 상근(SK)이 승리하고, 짝수일때는 창영(CY)가 승리하는 패턴을 찾을 수 있습니다. 2024. 2. 22.
[백준 / Python] 7569번 토마토 문제 https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 소스코드 #3차원 dfs / / replit.com from collections import deque # append():- This function is used to insert the value in its argument to the right end of the deque. # appendleft():- This function is used to inse.. 2024. 2. 17.
[백준 / Python] 1927번 최소 힙 문제 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 소스코드 import heapq import sys # 최소힙 문제 # heapq.heappush(heap, item) : item을 heap에 추가 # heapq.heappop(heap) : heap에서 가장 작은 원소를 pop & 리턴. 비어 있는 경우 IndexError가 호출됨. # heapq.heapify(x) : 리스트 x를 즉각적으로 heap으로 변환함 N =.. 2024. 2. 13.
[백준 / Python] 9625번 BABBA 문제 https://www.acmicpc.net/problem/9625 9625번: BABBA 상근이는 길을 걷다가 신기한 기계를 발견했다. 기계는 매우 매우 큰 화면과 버튼 하나로 이루어져 있다. 기계를 발견했을 때, 화면에는 A만 표시되어져 있었다. 버튼을 누르니 글자가 B로 변했 www.acmicpc.net 소스 코드 a, b = 1, 0 n = int(input()) for i in range(n): a, b = b, a + b print(a, b) 간단한 규칙을 찾는 문제입니다. 2024. 2. 8.
[알고리즘 / 정렬] 병합정렬(merge sort) / 파이썬코드 병합정렬이란 합병정렬이라고도 불리는 병합정렬(merge sort)는 존 폰 노이만이 1945년도에 개발한 분할 정복을 기반으로 하는 정렬 알고리즘이다. 작동원리 1. 분할 (divide) 하나의 요소만을 가질때까지 입력 배열을 반으로 계속 분할한다. 2. 정복(conquer), 결합(merge) 2개의 하위배열을 정렬하며 병합하고 최종적으로 정렬된 배열을 완성한다. 시간복잡도 최선, 평균, 최악의 경우 O(n log n) 배열을 반으로 분할할때 log n 시간이 걸리고 각 레벨에서 n개의 요소를 비교하기때문 공간복잡도 O(n) 장단점 장점 최악의 경우에도 O(n log n)의 시간복잡도인 안정적인 정렬방법이다. 큰 데이터에 효율적이다. 단점 추가적인 메모리가 필요하다 (in-place 정렬이 아니다) 가.. 2024. 1. 1.
[백준 / Python] 11003번 최솟값 찾기 문제 https://www.acmicpc.net/problem/11003 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 11003번 최솟값 찾기 파이썬 풀이 from collections import deque N, L = map(int, input().split()) deque = deque() data = list(map(int, input().split())) for i in range(N): while deque and deque[-1][0] > data[i]: dequ.. 2023. 12. 29.
[백준 / Python] 17504번 제리와 톰 2 문제 https://www.acmicpc.net/problem/17504 17504번: 제리와 톰 2 $$ 1 - \cfrac{1}{2 + \cfrac{1}{7 + \cfrac{1}{1 + \cfrac{1}{8}}}} = 1 - \cfrac{1}{2 + \cfrac{1}{7 + \cfrac{8}{9}}} = 1 - \cfrac{1}{2 + \cfrac{9}{71}} = 1 - \cfrac{71}{151} = \cfrac{80}{151} $$ www.acmicpc.net 코드 n = int(input()) data = list(map(int, input().split())) datar = data[::-1] temp = 1 a, b = 1, 1 # a / b for i in range(len(datar)).. 2023. 12. 25.
[백준 / Python] 30457번 단체줄넘기 문제 https://www.acmicpc.net/problem/30457 30457번: 단체줄넘기 $N$명의 학생들이 단체줄넘기를 하려고 한다. 단체줄넘기를 하기 위해서는 한 줄로 나란히 서야 하고, 학생들은 각자 줄을 잡은 양쪽 방향 중 한 곳을 바라보고 서야 한다. 학생들은 각자 바라보 www.acmicpc.net 코드 n = int(input()) data = list(map(int, input().split())) data.sort() data1 = [] data2 = [] i = 0 while True: if i == len(data): break data1.append(data[i]) i += 1 if i == len(data): break data2.append(data[i]) i += 1 .. 2023. 12. 17.
728x90
반응형