실버3
-
문제 보기 : 1966번: 프린터 큐 문제정답률 : 58%작성 코드from collections import dequedef importance(arr,arr1,n): k = 0 while arr: idx, imp = arr.popleft() left = [i for i,j in arr if j>imp] if left: arr.append((idx, imp)) else: k += 1 # 프린트 if idx == n and arr1[n] == imp: return k return kT = int(input())for _ in range(T): n,..
S3 1966. 프린터 큐문제 보기 : 1966번: 프린터 큐 문제정답률 : 58%작성 코드from collections import dequedef importance(arr,arr1,n): k = 0 while arr: idx, imp = arr.popleft() left = [i for i,j in arr if j>imp] if left: arr.append((idx, imp)) else: k += 1 # 프린트 if idx == n and arr1[n] == imp: return k return kT = int(input())for _ in range(T): n,..
2024.11.07 -
문제 보기 : 15652번: N과 M (4) 문제정답률 : 78% 작성 코드def product(n,new,c): global arr answer = [] if len(new) == n: return [new] for i in range(c,len(arr)): answer.extend(product(n,new+[arr[i]],i)) return answern,m = map(int,input().split())arr = list(i for i in range(1,n+1))visited = [False]*(n)for p in product(m,[],0): print(*p, sep=' ')풀이product는 permutations에서 중복을 허용한건데..
S3 15652. N과 M (4)문제 보기 : 15652번: N과 M (4) 문제정답률 : 78% 작성 코드def product(n,new,c): global arr answer = [] if len(new) == n: return [new] for i in range(c,len(arr)): answer.extend(product(n,new+[arr[i]],i)) return answern,m = map(int,input().split())arr = list(i for i in range(1,n+1))visited = [False]*(n)for p in product(m,[],0): print(*p, sep=' ')풀이product는 permutations에서 중복을 허용한건데..
2024.11.07 -
문제 보기 : 11727번: 2×n 타일링 2 문제정답률 : 58%작성 코드arr = [1]*(1001)for i in range(1,1001): if i%2==1: arr[i]=arr[i-1]*2 + 1 else: arr[i]=arr[i-1]*2 - 1 arr[i] %= 10007T = int(input())print(arr[T-1])풀이1 : 1, 2: 3, 3: 5. 4: 11, 5: 21, 6: 21, 7: 43...의 순서로 증가하는 규칙을 가진다. 1*2와 2*1만 있을 때는 피보나치 수열로 해결하면 됐는데 [1, 3, 5, 11, 21, 43,.. ] 이 수열은 규칙을 찾기가 좀 어려웠다.그래서 제곱에 차수 빼는 방법, 이전 값 모두 더해서 다음 값..
S3 11727. 2×n 타일링 2문제 보기 : 11727번: 2×n 타일링 2 문제정답률 : 58%작성 코드arr = [1]*(1001)for i in range(1,1001): if i%2==1: arr[i]=arr[i-1]*2 + 1 else: arr[i]=arr[i-1]*2 - 1 arr[i] %= 10007T = int(input())print(arr[T-1])풀이1 : 1, 2: 3, 3: 5. 4: 11, 5: 21, 6: 21, 7: 43...의 순서로 증가하는 규칙을 가진다. 1*2와 2*1만 있을 때는 피보나치 수열로 해결하면 됐는데 [1, 3, 5, 11, 21, 43,.. ] 이 수열은 규칙을 찾기가 좀 어려웠다.그래서 제곱에 차수 빼는 방법, 이전 값 모두 더해서 다음 값..
2024.11.07 -
문제 보기 : 11659번: 구간 합 구하기 4 문제정답률 : 38%작성 코드import sysinput = sys.stdin.readlinen,m = map(int,input().split())ls = list(map(int,input().split()))lst = [0]*(n+1)for i in range(1,n+1): lst[i] = lst[i-1]+ls[i-1]for _ in range(m): a,b = map(int,input().split()) print(lst[b]-lst[a-1])풀이ls가 5,4,3,2,1이라면 lst를 0,5,9,12,14,15로 만들어두고 (누적 합 알고리즘) lst의 인덱스를 활용해서 답을 구한다!
S3 11659. 구간 합 구하기 4문제 보기 : 11659번: 구간 합 구하기 4 문제정답률 : 38%작성 코드import sysinput = sys.stdin.readlinen,m = map(int,input().split())ls = list(map(int,input().split()))lst = [0]*(n+1)for i in range(1,n+1): lst[i] = lst[i-1]+ls[i-1]for _ in range(m): a,b = map(int,input().split()) print(lst[b]-lst[a-1])풀이ls가 5,4,3,2,1이라면 lst를 0,5,9,12,14,15로 만들어두고 (누적 합 알고리즘) lst의 인덱스를 활용해서 답을 구한다!
2024.11.05 -
문제 보기 : 9461번: 파도반 수열 문제정답률 : 43%작성 코드arr = [1,1,1,2,2]+[0]*96for i in range(5,101): arr[i]=arr[i-1]+arr[i-5]k = int(input())for _ in range(k): i = int(input()) print(arr[i-1])풀이이런 문제는 array를 모두 만들어놓고 찾는다는 거 다들 알죠??그리고 바로 코드를 만들기보다는, 규칙을 직접 찾아보는게 시간 절약과 풀이에 훨씬 좋다.
S3 9461. 파도반 수열문제 보기 : 9461번: 파도반 수열 문제정답률 : 43%작성 코드arr = [1,1,1,2,2]+[0]*96for i in range(5,101): arr[i]=arr[i-1]+arr[i-5]k = int(input())for _ in range(k): i = int(input()) print(arr[i-1])풀이이런 문제는 array를 모두 만들어놓고 찾는다는 거 다들 알죠??그리고 바로 코드를 만들기보다는, 규칙을 직접 찾아보는게 시간 절약과 풀이에 훨씬 좋다.
2024.11.04 -
문제 보기 : 15650번: N과 M (2) 문제정답률 : 73%작성 코드def combinations(n,new,c): answer = [] if len(new)==n: return [new] for i in range(c,len(arr)): answer.extend(combinations(n,new+[arr[i]],i+1)) return answern,m = map(int,input().split())arr = [i for i in range(1,n+1)]visited = [False]*(n)ans = combinations(m,[],0)for a in ans: print(*a, sep=' ')풀이며칠 전에 풀이한 N, M(1) 문제에서 permu..
S3 15650. N과 M (2)문제 보기 : 15650번: N과 M (2) 문제정답률 : 73%작성 코드def combinations(n,new,c): answer = [] if len(new)==n: return [new] for i in range(c,len(arr)): answer.extend(combinations(n,new+[arr[i]],i+1)) return answern,m = map(int,input().split())arr = [i for i in range(1,n+1)]visited = [False]*(n)ans = combinations(m,[],0)for a in ans: print(*a, sep=' ')풀이며칠 전에 풀이한 N, M(1) 문제에서 permu..
2024.11.02 -
문제 보기 : 15649번: N과 M (1) 문제정답률 : 63%작성 코드def per(n,new): global arr answer = [] if len(new)==n: return [new] for i in range(len(arr)): if not visited[i]: visited[i]=True answer.extend(per(n,new+[arr[i]])) visited[i]=False return answern,m = map(int, input().split()) #1부터 n까지, m개arr = [i for i in range(1,n+1)]visited = [False]*nk = pe..
S3 15649. N과 M (1)문제 보기 : 15649번: N과 M (1) 문제정답률 : 63%작성 코드def per(n,new): global arr answer = [] if len(new)==n: return [new] for i in range(len(arr)): if not visited[i]: visited[i]=True answer.extend(per(n,new+[arr[i]])) visited[i]=False return answern,m = map(int, input().split()) #1부터 n까지, m개arr = [i for i in range(1,n+1)]visited = [False]*nk = pe..
2024.10.30 -
문제 보기 : 2606번: 바이러스 문제정답률 : 46%작성 코드def dfs(graph,start,visited): visited[start]=True answer = 1 for node in graph[start]: if not visited[node]: answer += dfs(graph,node,visited) return answerT = int(input())n = int(input())graph = {i+1:[] for i in range(T)}for _ in range(n): n1,n2 = map(int,input().split()) graph[n1].append(n2) graph[n2].append(n1)visited..
S3 2606. 바이러스문제 보기 : 2606번: 바이러스 문제정답률 : 46%작성 코드def dfs(graph,start,visited): visited[start]=True answer = 1 for node in graph[start]: if not visited[node]: answer += dfs(graph,node,visited) return answerT = int(input())n = int(input())graph = {i+1:[] for i in range(T)}for _ in range(n): n1,n2 = map(int,input().split()) graph[n1].append(n2) graph[n2].append(n1)visited..
2024.10.25