SSENI's
search
sseni
말하는 감자에서 자라기
Today
Yesterday
백트래킹 (9)
https://www.acmicpc.net/problem/2961 2961번: 도영이가 만든 맛있는 음식 첫째 줄에 재료의 개수 N(1 ≤ N ≤ 10)이 주어진다. 다음 N개 줄에는 그 재료의 신맛과 쓴맛이 공백으로 구분되어 주어진다. 모든 재료를 사용해서 요리를 만들었을 때, 그 요리의 신맛과 쓴맛은 www.acmicpc.net 풀이 재료 n개, 각 재료의 신맛 S, 쓴맛 B 여러 재료로 요리할 때, 신맛 = 사용한 재료들의 신맛의 곱 쓴맛 = 사용한 재료들의 쓴맛의 합 신맛과 쓴맛의 차이를 적게, 재료는 적어도 하나 사용 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impo..
코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main { static StringBuilder sb; static int n, m; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = ..
코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.StringTokenizer; // 1. 비트마스킹으로 부분 집합을 구한다. // 2. 합과 s 를 비교하여 카운트한다. public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(..
코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; // 전체적으로 불필요한 과정이 많았던 거 같다. testCase 를 굳이 저장한다던지? public class Main { // https://www.acmicpc.net/problem/15661 // 1. 될 수 있는 팀의 경우의 수 뽑기, 부분 집합 구하기 -> bitmask // 2. 각 경우마다 팀 능력치 합 구하기 // point. 비트마스킹은? -> 부분 집합 과정 위해 s..
코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.StringTokenizer; public class Main { static int n, m; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = ..
풀이 처음에는 시간초과났다. 나는 치킨집 전체에서 하나씩 제거해가며 m 개수에 맞춰서 경우의 수 계산 수정된 코드는 0개부터 시작해서 m개만큼 골라서 경우의 수 계산 ex. 13개 중에 2개 뽑기 → 11개를 제거해야 하니 비효율적 → 2개씩 골라서 경우의 수 계산해나가는 게 정답. 코드 public class B15686 { public static class Point { int x, y; public Point(int x, int y){ this.x = x; this.y = y; } } static int n, m, distance; static int[][] city; static boolean[] isVisit; public static void main(String[] args) throws ..
DFS 사용 팀을 선정할 때, "조합 (Combination)" 으로 선택 참고 void combination(int depth, int next){ if(depth == r){ printArray(cArr); return; } for(int i = next; i
n = int(input()) num = list(map(int, input().split())) op = list(map(int, input().split())) minN = int(1e9) maxN = int(-1e9) def f(c, v): global minN, maxN if c == n: if minN > v: minN = v if maxN < v: maxN = v else: for i in range(4): if op[i] == 0: continue op[i] -= 1 if i == 0: f(c+1, v + num[c]) elif i == 1: f(c+1, v - num[c]) elif i == 2: f(c+1, v * num[c]) elif i == 3: f(c+1, int(v / num[c..
#include #include #include #include using namespace std; int n, num[100], oper[4]; int maxNum = INT_MIN; int minNum = INT_MAX; void f(int c, int v) { if (c == n) { minNum = min(minNum, v); maxNum = max(maxNum, v); } else { for (int i = 0; i < 4; i++) { if (oper[i] == 0) continue; oper[i]--; // 선택 if (i == 0) f(c + 1, v + num[c]); else if (i == 1) f(c + 1, v - num[c]); else if (i == 2) f(c + 1, v..