백준/브루트포스 알고리즘
-
백준 16943 python백준/브루트포스 알고리즘 2023. 4. 10. 17:59
문제 https://www.acmicpc.net/problem/16943 16943번: 숫자 재배치 두 정수 A와 B가 있을 때, A에 포함된 숫자의 순서를 섞어서 새로운 수 C를 만들려고 한다. 즉, C는 A의 순열 중 하나가 되어야 한다. 가능한 C 중에서 B보다 작으면서, 가장 큰 값을 구해보자. C는 0 www.acmicpc.net 풀이 파이썬 내장 순열 알고리즘을 이용해 튜플을 생성한다. 크기 순서대로 정렬하여 조건에 맞는 정답을 찾는다. from itertools import permutations A,B=map(int, input().split()) A=list(map(int, str(A))) o=-1 for num in sorted(permutations(A,len(A))): if num[..
-
백준 16937 nodejs백준/브루트포스 알고리즘 2023. 2. 23. 11:55
문제 https://www.acmicpc.net/problem/16937 16937번: 두 스티커 첫째 줄에 모눈종이의 크기 H, W, 둘째 줄에 스티커의 수 N이 주어진다. 다음 N개의 줄에는 스티커의 크기 Ri, Ci가 주어진다. www.acmicpc.net 풀이 하나의 스티커를 기준으로, 나머지 스티커를 아래쪽이나 오른쪽으로 붙일 수 있다. (위쪽이나 왼쪽에 붙인 경우는 각각 아래쪽이나 오른쪽으로 붙인 경우와 동일하다.) 두 스티커 및 모눈종이의 회전까지 고려하여 경우의 수를 구한다. let [[H, W], [N], ...I] = `${require('fs').readFileSync(0)}`.trim().split`\n`.map(e => e.split` `.map(Number)) let [o, F]..
-
백준 14502 nodejs백준/브루트포스 알고리즘 2023. 1. 25. 12:03
문제 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 풀이 조합 C를 이용해 벽을 3개 세우는 모든 경우의 수를 찾아 배열 B에 저장한다. B에서 벽을 세울 수 없는 경우를 제외한 나머지 모든 경우의 dfs를 실시하고, 최댓값을 찾는다. let [[N, M], ...I] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(e => e.split(' ').map(Number..
-
백준 12919 nodejs백준/브루트포스 알고리즘 2023. 1. 19. 16:17
문제 https://www.acmicpc.net/problem/12919 12919번: A와 B 2 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수빈 www.acmicpc.net 풀이 dfs를 이용해 B가 A가 될 수 있는지 확인한다. let [A, B] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n') B = B.split('') let [stack, o] = [[B], 0] while (stack.length) { const x = stack...
-
백준 15686 nodejs백준/브루트포스 알고리즘 2023. 1. 17. 16:13
문제 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 풀이 집의 좌표를 S, 치킨집의 좌표를 E에 저장한다. 조합을 이용해 치킨집의 좌표의 index로 가능한 경우의 수를 A에 저장한다. 모든 A에 대해 해당하는 치킨집 좌표를 E1으로 변환해 치킨 거리의 최솟값을 구한다. let [[N, M], ...I] = require('fs').readFileSync('/dev/stdin').toString().trim().split..
-
백준 1107 nodejs백준/브루트포스 알고리즘 2022. 12. 9. 16:07
문제 https://www.acmicpc.net/problem/1107 풀이 이동하는 경우의 수는 총 3가지로 나뉜다. 100번에서 +, - 버튼으로 이동 N보다 작은 가장 가까운 수인 l로 이동 후 + 버튼으로 이동 N보다 큰 가장 가까운 수인 r로 이동 후 - 버튼으로 이동 이 중 최솟값을 구한다. let [N, M, A] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n') A = new Set(A && A.split(' ')) let [l, r, O] = [N, N, [Math.abs(+N - 100)]] const check = x => x.split('').every(e => !A.has(e)) if (M < 10) ..