목록알고리즘 (16)
정글에서 온 개발자
좋은 코드 훔쳐오기def solution(numbers): Num = set() def perm(pick,unpick): if(pick!=''): Num.add(int(pick)) for i in range(len(unpick)): perm(pick+unpick[i], unpick[:i]+unpick[i+1:]) perm('',numbers) Num-={0,1} for i in range(2,int(max(Num)**0.5)+1): Num-=set(range(i*2,max(Num)+1,i)) return len(Num)관전 포인트itertools의 permutation을 쓰지..
코드import randomA = 0 # 구간의 최소값B = 1000 # 구간의 최대값L = 100 # 배열 최대 크기def correct_solution(numbers): answer = numbers # 정답 코드 return answerdef my_solution(numbers): answer = numbers # 내 풀이 코드 return answer def generate_random_numbers(a,b,n): return [random.randint(a,b) for _ in range(n)]def compare_solution(numbers, i=0): result1 = correct_solution(numbers) result2 = my_sol..
시도BruteForce로 비교 못함배열의 길이가 N 일 때 O(N!) 만큼 시간이 걸려 문자열을 생성해서 비교해야 한다. 생성된 문자열을 숫자로 바꾸어 비교해야하는데, 이때 숫자의 최대 길이는 1e5 * 1e3 으로 1e8 (숫자의 크기가 아니라 숫자의 길이라는데 유의) 이기 때문에 이 숫자를 2진수로 표현만 해도 약 41.52MB 를 잡아 먹는다. ( 10^(10^8) 에 밑이 2인 log를 취한 값 만큼 비트가 필요함 )가장 먼저 떠올리기 쉬운 정렬인 ‘사전식 순서(lexicographical order)’ 정렬을 해도 안 풀림[2,20,9] 을 사전식으로 정렬하면 [2,20,9] 가 나온다.사전에서는 더 짧은 숫자가 앞에 나오기 때문이다.큰 수를 만들기 위해서는 이걸 거꾸로(reverse) 해야 하..
13335번: 트럭 접근 방법 큐로 풀면 될 것 같다. 크게 2가지가 있다. 트럭이 나와야할 시간 체크하기 트럭을 큐에 넣을 때 진입하는 시간을 같이 넣는다. 트럭이 나올 때가 됐는지 시간별로 체크한다.(트럭시간 + L이 나올 시간이다.) 트럭이 이동하는 다리 시뮬레이트 하기 시간마다 실제로 트럭의 무게를 큐에 넣는다. 트럭이 들어가지 않아야할 때는 0을 넣는다. 시간마다 큐에서 pop한다. 트럭이 나와야 할 시간 체크하기 from collections import deque N,L,W = map(int,input().split()) A = deque([*map(int,input().split())]) t=0 Q=deque([]) totalWeight = 0 while A: t+=1 if(Q and t>..
첫번째 시도 최소힙, 최대힙 두개를 운용하고, size만 조절해 D연산시 size 이상으로 pop을 못하게 하면 되지 않을까? import heapq T=int(input()) for _ in range(T): k = int(input()) sQ = [] lQ = [] size=0 for _ in range(k): cmd, num = input().strip().split() num = int(num) if(cmd=="I"): heapq.heappush(sQ,num) heapq.heappush(lQ,-num) size+=1 if(size>0 and cmd=="D"): size-=1 if(num==1): heapq.heappop(lQ) elif(num==-1): heapq.heappop(sQ) if(siz..
Two Sum LeetCode - The World's Leading Online Programming Learning Platform Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제의 핵심 합이 특정 값이 되는 두 수를 O(n)에 찾을 수 있는지? O(n^2) class Solution(object): def twoSum(self, nums, target): length = len(nums) fin=False for i in range(0,length): for j in ..