문제 코드import sysinput = sys.stdin.readlinen, m = map(int, input().split())answer = []a_list = list(map(int, input().split()))b_list = list(map(int, input().split()))a_idx, b_idx = 0, 0for _ in range(n + m): if a_idx == n and b_idx != m: for i in b_list[b_idx:]: answer.append(i) break elif a_idx != n and b_idx == m: for i in a_list[a_idx:]: answer.a..
728x90
반응형
알고리즘
문제코드import sysinput = sys.stdin.readlinen, x = map(int, input().split())arr = list(map(int, input().split()))init_data = sum(arr[0:0 + x])visitor = [init_data]for i in range(1, n - x + 1): visitor.append(visitor[i-1] - arr[i - 1] + arr[i + x - 1])if max(visitor) == 0: print("SAD")else: print(max(visitor), visitor.count(max(visitor)), sep="\n") `슬라이딩 윈도우` 알고리즘은 고정 범위를 탐색할 때 효율적임한 칸을 전진하면..
문제코드import sysfrom collections import dequeinput = sys.stdin.readlinedef bfs(): count = 1 while deq: y, x = deq.popleft() for i in range(4): ny = y + dy[i] nx = x + dx[i] if 0 그림이 없는 경우 0을 두 번 출력해야하는데 1번만 출력해서 시간을 날렸다.뭔가 더 줄일 수 있는 코드가 있을 것 같다.다음에는 더 깔끔하고 보기 쉽게 풀자.. 문제도 잘 읽자..
[Silver II] 좌표 압축 - 18870 문제 링크 성능 요약 메모리: 143268 KB, 시간: 1768 ms 분류 값 / 좌표 압축, 정렬 제출 일자 2024년 2월 23일 12:03:12 문제 설명 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 출력 첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 ..
[Silver II] 가장 긴 증가하는 부분 수열 - 11053 문제 링크 성능 요약 메모리: 31120 KB, 시간: 100 ms 분류 다이나믹 프로그래밍 제출 일자 2024년 2월 23일 09:59:36 문제 설명 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이..
[Silver III] N과 M (1) - 15649 문제 링크 성능 요약 메모리: 35556 KB, 시간: 112 ms 분류 백트래킹 제출 일자 2024년 2월 22일 12:57:58 문제 설명 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. # 순열 import from itertools import permuta..
[Silver IV] 동전 0 - 11047 문제 링크 성능 요약 메모리: 31120 KB, 시간: 40 ms 분류 그리디 알고리즘 제출 일자 2024년 2월 20일 17:22:18 문제 설명 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수..
728x90
반응형