브루트포스
-
[백준] 2422 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 with PythonPS 2022. 2. 13. 23:35
📌 BOJ 2422 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 💡 조건 아이스크림 가게에는 N종류의 아이스크림이 있다. 모든 아이스크림은 1부터 N까지 번호가 매겨져있다. 어떤 종류의 아이스크림을 함께먹으면, 맛이 아주 형편없어진다. 정수 N과 M이 주어진다. (1 ≤ N ≤ 200, 0 ≤ M ≤ 10,000) N은 아이스크림 종류의 수이고, M은 섞어먹으면 안 되는 조합의 개수이다. 같은 조합은 두 번 이상 나오지 않는다. 브루트포스 알고리즘, 그래프 이론유형의 문제 🖥 소스 코드 from sys import stdin from itertools import combinations n, m = map(int, stdin.readline().split()) ice_cream = set(x for x..
-
[백준] 1759 암호 만들기 with PythonPS 2022. 2. 13. 23:18
📌 BOJ 1759 암호 만들기 💡 조건 암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음(a, e, i, o, u)과 최소 두 개의 자음으로 구성되어 있다고 알려져 있다. 암호를 이루는 알파벳이 암호에서 증가하는 순서로 배열되었을 것. 즉, abc는 가능성이 있는 암호이지만 bac는 그렇지 않다. C개의 문자들이 모두 주어졌을 때, 가능성 있는 암호들을 모두 구하는 프로그램을 작성. 각 줄에 하나씩, 사전식으로 가능성 있는 암호를 모두 출력 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 문자들은 알파벳 소문자이며, 중복되는 것은 없다. 브루트포스, 백트래킹 유형의 문제 🖥 소스 코드 from sys import stdin from itertools import com..
-
[백준] 14500 테트로미노 with PythonPS 2022. 2. 2. 17:34
📌 BOJ 14500 테트로미노 💡 조건 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 정수가 하나 쓰여 있다. 테트로미노 하나를 적절히 놓아서 테트로미노가 놓인 칸에 쓰여 있는 수들의 합을 최대로 해야한다. 테트로미노는 반드시 한 정사각형이 정확히 하나의 칸을 포함하도록 놓아야 하며, 회전이나 대칭을 시켜도 된다. 종이의 세로 크기 N과 가로 크기 M이 주어진다. (4 ≤ N, M ≤ 500) N개의 줄에 종이에 쓰여 있는 수가 주어진다. i번째 줄의 j번째 수는 위에서부터 i번째 칸, 왼쪽에서부터 j번째 칸에 쓰여 있는 수이다. 입력으로 주어지는 수는 1,000을 넘지 않는 자연수이다. S의 문제 🖥 소스 코드 from sys..
-
[백준] 10819 차이를 최대로 with PythonPS 2022. 1. 11. 17:53
📌 BOJ 10819 차이를 최대로 💡 조건 N개의 정수로 이루어진 배열 A N (3 ≤ N ≤ 8) 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. 다음 식의 최댓값을 구하는 프로그램을 작성. |A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]| 5. **브루트포스 알고리즘 유형**의 문제 ## 🖥 소스 코드 from sys import stdin from itertools import permutations n = int(stdin.readline()) arr = list(map(int, stdin.readline().split())) res = -int(1e9) for arr2 in permutations(arr, n): v ..
-
[백준] 18511 큰 수 구성하기 with PythonPS 2021. 12. 18. 19:33
📌 BOJ 18511 큰 수 구성하기 💡 조건 N보다 작거나 같은 자연수 중에서, 집합 K의 원소로만 구성된 가장 큰 수를 출력하는 프로그램을 작성. (10 ≤ N ≤ 100,000,000, 1 ≤ K의 원소의 개수 ≤ 3) K의 모든 원소는 1부터 9까지의 자연수로만 구성된다. 첫째 줄에 N보다 작거나 같은 자연수 중에서, K의 원소로만 구성된 가장 큰 수를 출력 브루트포스 알고리즘, 재귀함수 유형의 문제 🖥 소스 코드 from sys import stdin from itertools import product n, k = map(str, stdin.readline().split()) arr = list(map(int, stdin.readline().split())) arr.sort(reverse=Tr..
-
[백준] 14620 꽃길 with PythonPS 2021. 12. 13. 21:18
📌 BOJ 14620 꽃길 💡 조건 꽃밭은 N * N 의 격자 모양이고, 씨앗을 (1, 1) ~ (N, N)의 지점 중 한곳에 심을 수 있다. 1년 후 상하좌우로 꽃잎이 펼쳐진다. 어떤 씨앗이 꽃이 핀 뒤, 다른 꽃잎 혹은 꽃술과 닿게 될 경우 꽃이 둘 다 죽어버린다. 서로 다른 세 씨앗을 모두 꽃이 피게하면서 가장 싼 가격에 화단을 대여하려고 한다. 진아가 꽃을 심을 수 있는 최소비용을 구하는 문제이다. 한 변의 길이 N(6 ≤ N ≤ 10) 화단의 지점당 가격(0 ≤ G ≤ 200) 브루트포스 알고리즘 유형의 문제 🖥 소스 코드 from sys import stdin, setrecursionlimit setrecursionlimit(10 ** 9) n = int(stdin.readline()) arr..
-
[백준] 2615 오목 with PythonPS 2021. 12. 12. 17:42
📌 BOJ 2615 오목 💡 조건 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있다. board의 크기는 19 * 19 검은 바둑알은 1, 흰 바둑알은 2, 알이 놓이지 않는 자리는 0으로 표시 가로, 세로 또는 대각선 방향 모두 포함해서 같은 색의 바둑돌이 5개 놓여져 있다면 승리한다. 5개 초과 또는 미만의 개수는 승리할 수 없다 검은색이 이겼는지, 흰색이 이겼는지 또는 아직 승부가 결정되지 않았는지를 판단하는 프로그램을 작성. 검은색이 이겼을 경우에는 1을, 흰색이 이겼을 경우에는 2를, 아직 승부가 결정되지 않았을 경우에는 0을 출력 은색 또는 흰색이 이겼을 경우에는 둘째 줄에 연속된 다섯 개의 바둑알 중에서 가장 왼쪽에 있는 바둑알의 가로줄, 세로줄 번호를 출력한다. 세로로 놓인 경우,..
-