목록🤖 알고리즘 (8)
( •̀ ω •́ )✧
🔎 BOJ 18353. 병사 배치하기 (Silver 2) https://www.acmicpc.net/problem/18353 18353번: 병사 배치하기 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 2,000) 둘째 줄에 각 병사의 전투력이 공백을 기준으로 구분되어 차례대로 주어진다. 각 병사의 전투력은 10,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 💡 SOL import sys from bisect import bisect_left input = sys.stdin.readline N = int(input()) arr = list(map(int, input().split())) dp = [0] for a in arr[::-1]: if dp[-1] < a: dp.append(a..
🔎 BOJ 2110. 공유기 설치 (Gold 4) https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 💡 SOL import sys from bisect import bisect_left input = sys.stdin.readline N, C = map(int, input().split()) # N 집 수 C 공유기 수 X = [0] * N for i in range(N): X[i] = int(..
🔎 BOJ 16118. 달빛 여우 (Gold 1) https://www.acmicpc.net/problem/16118 16118번: 달빛 여우 첫 줄에 나무 그루터기의 개수와 오솔길의 개수를 의미하는 정수 N, M(2 ≤ N ≤ 4,000, 1 ≤ M ≤ 100,000)이 주어진다. 두 번째 줄부터 M개의 줄에 걸쳐 각 줄에 세 개의 정수 a, b, d(1 ≤ a, b ≤ N, a ≠ b www.acmicpc.net 💡 SOL import sys from heapq import heappush, heappop input = sys.stdin.readline N, M = map(int, input().split()) arr = [[] for _ in range(N + 1)] for _ in range(M)..
🔎 BOJ 1789. 수들의 합 (Silver 5) https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 💡 SOL import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); long N = Long.parseLong(br.readLine())..
🔎 BOJ 1456. 거의 소수 (골드5) https://www.acmicpc.net/problem/1456 1456번: 거의 소수 어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다. 두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다. www.acmicpc.net 💡 SOL import sys import math A, B = map(int, sys.stdin.readline().split()) # 범위 2 ~ B**(1/2) S = 2 E = int(B ** (1/2)) # S~E까지 소수 찾기 - 에라토스테네스의 체 sosu = [i for i in range(E+1)] sosu[1] = 0 idx = 2 while idx
🔎 BOJ 2800. 괄호 제거 (골드5) https://www.acmicpc.net/problem/2800 2800번: 괄호 제거 첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개 www.acmicpc.net 💡 SOL import sys import copy #1 : 입력 A = list(sys.stdin.readline().strip()) gual = [] stack = [] #2 : stack으로 괄호 쌍 처리 / gual 리스트에 괄호쌍의 인덱스 위치 저장 for i in range(len(A)): if A[i] == '..
🔎 BOJ 14502. 연구소 (골드4) https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 💡 Sol import sys import copy from collections import deque from itertools import combinations N, M = list(map(int, sys.stdin.readline().split())) array, zero, two = [], [], [] one = 3 for i in range(N): new ..
🔎 SWEA 1959. 두 개의 숫자열 (D2) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpoFaAS4DFAUq 💡 풀이 case = int(input()) num = 1 while case > 0 : case -= 1 n,m = map(int, input().split()) a = list(map(int, input().split())) b = list(map(int, input().split())) max = -1000 if n < m : for i in range(m - n + 1) : result = [a[i] * b[i] for i in range(len(a))] result = sum(res..