PYTHON
-
비중복순열PYTHON 2024. 7. 8. 22:55
어떤 값을 받으면 그 구성은 똑같은 여러 값들을 모두 보고싶음ex) 123을 입력 받을 떄 -> 123, 132, 213, 231, 321, 312를 출력nrr=list(input())n=len(nrr)ans = []arr=[0 for i in range(n)]visited = [False for i in range(n)]def recur(x): if x== n: # 전부 만들었으면 ans에 추가 # print(ans) ans.append(arr) return for i in range(n): if visited[i]: # 썼던 거면 패스 continue visited[i] ..
-
자료구조 : 데이터에 효율적으로 접근하기 위한 관리PYTHON 2024. 7. 6. 00:06
스택 = LIFO 후입선출리스트로 쉽게 구현arr = []# 삽입arr.append(1) # arr = [1]arr.append(5) # arr = [1, 5]arr.append(3) # arr = [1, 5, 3]# 반환arr.pop() # arr = [1, 5]arr.pop() # arr = [1]큐 = FIFO 선입선출리스트와 deque로 구현arr = []# 삽입arr.append(1) # arr = [1]arr.append(5) # arr = [1, 5]arr.append(3) # arr = [1, 5, 3]# 반환arr.pop(0) # arr = [5, 3]arr.pop(0) # arr = [3]근데 pop(0)는 0번째 원소를 꺼내고 다시 인덱스 정비해줘야하므로 O(N)라 불리함=> 덱을 쓰..
-
탐색 : 주어진 조건을 만족하여 데이터를 찾아내기PYTHON 2024. 7. 5. 23:26
완전탐색 = 브루트포스(brute-force) 알고리즘컴퓨터를 믿고(1초에 1억번 계산) 일일이 전부 무식하게 계산*시간 복잡도를 먼저 계산해보기!import sysinput = sys.stdin.readlineans=0r,c=map(int,input().split())arr=[]for _ in range(r): arr.append(list(map(int,input().split())))t=int(input())noise=[]for i in range(r-2): for j in range(c-2): noise=sorted(arr[i][j:j+3]+arr[i+1][j:j+3]+arr[i+2][j:j+3]) if noise[4]>=t: ans+=1 ..
-
8. 전체PYTHON 2023. 8. 28. 15:05
걍 다익스트라 사용 11256번: 사탕 (acmicpc.net) 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net 한번쓰니께 편함 import sys input = sys.stdin.readline import heapq t=int(input()) while t!=0: t-=1 j,n=map(int,input().split()) #사탕, 상자 list=[] for _ in range(n): r, c =map(int,input().split()) heapq.heappush(list, -r*c) ans=0 while j>..
-
3. 이진탐색PYTHON 2023. 8. 7. 13:12
이진탐색? 오름차순으로 정렬된 리스트에서, 특정한 값의 위치를 찾는, 알고리즘 찐 의미는 검색범위를 줄여나가며 원하는 데이터를 검색하는 알고리즘임 1부터 100까지의 수를 던져... 그 중에 너가 원하는 수가 있어...걔를 찾기 위해 완전탐색을 하면 최대 100번 체크하겠죠? -시간복잡도o(n) 근데 얘를 50! 아냐 작어... 25!! 아냐 커... 38!!! 까비 좀 더 작음이렇게 중간값으로 말해보고 큰지작은지 힌트 받는다고 생각해봐 정말 오래걸려도 6번이면 끝날듯- 시간복잡도 O(logN) 리스트 정렬이 필요하다면 - O(NlogN)이 되겠지?이진탐색기본코드num=49left=1righr=100while leftnum: #mid 왼쪽에 num right=mid-1 #r을 mid바로왼쪽에..
-
1. 완전탐색PYTHON 2023. 7. 18. 00:57
=브루트포스(brute-force) 알고리즘컴퓨터의 빠른 계산 속도를 믿고 모든 경우의 수를 전부 따지기.제한시간이 있는 문제를 풀 때, 완전 탐색 가능한지 판단이 먼저. O(n) 시간복잡도 계산하기.컴퓨터는 1초에 약 1억 번의 연산을 한다고 함. ~백준 세 문제 풀어보기~ 13423번: Three Dots (acmicpc.net) 13423번: Three Dots직선 위에 서로 다른 N개의 점이 찍혀 있다. 점 i의 위치는 Xi이다. N개의 점 중 3개를 골라 가장 왼쪽에 있는 점을 a, 가운데 있는 점을 b, 가장 오른쪽에 있는 점을 c라고 하자. 각각의 점의 위치는www.acmicpc.net시간복잡도 계산 안 하고 냅다 3중반복문으로 풀었을 때 : 시간초과점이 최대 1000개이니, 1000*100..