본문 바로가기

알고리즘/브루트포스

(6)
자바 | 백준 | 1034 | 램프 solution 1. 재귀 이용한 완전 탐색 → 시간초과 import java.io.*; import java.util.*; public class Main { static int N, M, K; static int max = 0; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextToken(..
자바 | 백준 | 1759 | 암호 만들기 Solution 조합 - C개 중 L개를 뽑아 자음 2개 이상, 모음 1개 이상이면 출력한다. 증가하는 순서로 배열되어 있으므로 sort 필요하다. // 1759, 암호 만들기 package BOJ; import java.io.*; import java.util.*; public class BOJ_1759 { static int L, C; static String[] alphas; static int[] combs; static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRe..
파이썬 | 백준 | 7569 | 토마토 | bfs 3차원 시간초과 solution 1. 상자의 수 H → 3차원 배열 tomatoes[z][x][y] 2. 최소 일수 → BFS # 7569, 토마토 import sys from collections import deque dx = [-1, 1, 0, 0, 0, 0] dy = [0, 0, -1, 1, 0, 0] dz = [0, 0, 0, 0, -1, 1] def bfs(x,y,z): q = deque() q.append((x, y, z)) visited[z][x][y] = 1 cnt = 0 while q: a, b, c = q.popleft() for i in range(6): nx = a + dx[i] ny = b + dy[i] nz = c + dz[i] if 0
파이썬 | 백준 | 15686 | 치킨 배달 | 조합(combinations) solution 1. 조합을 이용해 전체 치킨집에서 M개 선택 2. 집에서 치킨거리를 각각 구해 최소가 되는 조합을 구함 # 15686, 치킨 배달 import sys from itertools import combinations def getDistance(x, y): min_ = 100 for i in range(len(y)): min_ = min(min_, abs(y[i][0]-x[0])+abs(y[i][1]-x[1])) return min_ N, M = map(int, sys.stdin.readline().split()) city = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] home = [] chicken = [] for ..
파이썬 | 백준 | 2503 | 숫자 야구 | 순열(permutations) solution 1. 순열(permutations) 이용 2. int는 list() 불가능 → list(str(x)) # 2503, 숫자 야구 import sys from itertools import permutations n = [1, 2, 3, 4, 5, 6, 7, 8, 9] num = list(permutations(n, 3))# 순열로 3개씩 뽑음 t = int(sys.stdin.readline()) for _ in range(t): test, s, b = map(int, sys.stdin.readline().split()) test = list(str(test)) removed_cnt = 0 # 배열에서 제거된 튜플 개수 # num : 3개 리스트 leng = len(num) for i in ..
파이썬 | 백준 | 2309 | 일곱 난쟁이 | 조합(combinations) solution 1. 조합을 이용해 9개 중 7개를 뽑아 합이 100이면 출력한다. # 2309, 일곱 난쟁이 import sys from itertools import combinations dwarf = [int(sys.stdin.readline()) for _ in range(9)] # 조합을 이용해 9명 중 7명 뽑음 seven = list(combinations(dwarf, 7)) for i in seven: if sum(i) == 100: ans = list(i) break # 오름차순 출력 ans = sorted(ans) for ans_ in ans: print(ans_) 29380KB 60ms 문제 출처 https://www.acmicpc.net/problem/2309 2309번: 일곱 난..