일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 구글 킥스타트
- 킥스타트
- 프로그래머스
- BFS
- 백준
- 딥러닝
- kick start
- 동적 프로그래밍
- 코딩
- 알고리즘
- DFS
- 프로그래밍
- OS
- 브루트포스
- linux
- google coding competition
- 순열
- 동적프로그래밍
- 코딩 테스트
- 코딩테스트
- CSS
- dp
- PYTHON
- AI
- 운영체제
- 파이썬
- 리눅스
- nlp
- 그래프
- 네트워크
- Today
- Total
목록bruteforce (6)
오뚝이개발자
문제 https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 10개이고, 수의 최대 길이는 8이다. 서로 다른 문자는 서로 다른 숫자를 나타낸다. www.acmicpc.net 생각의 흐름 알파벳마다 중요도를 계산한다. 이 때, 중요도는 해당 알파벳이 등장하는 자릿값을 더해주는 것이다. 예를 들어, ABCDE가 주어졌다면 A의 중요도는 10000이 되는 것이다. 모든 알파벳의 중요도를 계산한 후 중요도가 큰 순서대로 9부터 순차적으로 할당해주면 된다. 깨달은 점 파이썬에서 아..
문제 https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 문제 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두 가지) 하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기에 적합한 표현이 아니다. 또한 한 www.acmicpc.net 생각의 흐름 에라토스테네스의 체를 이용하여 prime 리스트를 채워준뒤 brute-force를 이용하여 풀면 된다.(이 부분은 ..
문제 https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 생각의 흐름 combinations() 메소드를 이용하여 team1의 조합을 구한 뒤 그에 대응되는 team2의 조합을 구해 각 team의 구성원들의 능력치합 sum1, sum2를 구해 차이를 비교해주면 된다. 단순히 "차이"이므로 abs()를 써주어야 한다. 코드 # BOJ 14889 import itertools import sys n = int(input()) mat = [list(map(int, input..
문제 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net 생각의 흐름 리스트에 1부터 N까지의 수를 넣어 이들을 permutations(list, M)하면 끝! 코드 from itertools import permutations N, M = map(int, input().split()) arr = list(range(1, N+1)) for case in permutations(arr, M): print(' '.join(map(str, c..
문제 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 생각의 흐름 말 그대로 combinations를 이용해 부분수열(사실 조합이다)을 구해서 각 case마다 합을 구하고 이를 주어진 target과 비교해보면 된다. 코드 from itertools import combinations N, S = map(int, input().split()) arr = list(map(int, input().split())) ..
문제 https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 생각의 흐름 구해야 하는 것이 조합임을 파악 사전순으로 출력하기 위해 정렬 최소 한 개의 모음과 두 개의 자음을 포함하는지 조건 검사해서 출력 코드 from itertools import combinations L, C = map(int, input().split()) alphabet = list(map(str, input().split())) alphabet.sort() moeum_list = ..