[python] 백준 1543 : 문서 검색 1543번: 문서 검색 (acmicpc.net) 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net 실버 4 브루트포스, 그리디, 문자열 접근 예제 입력1을 예시로 접근해보자. ababababa aba 첫줄에 입력한 글자를 인덱스 0부터 끝까지 탐색할 필요가 없다. aba라는 3글자가 첫줄에 입력한 문자열에 존재하는지 확인하는 것이기 때문에 맨 처음 인덱스부터 맨 끝에서 세번째 인덱스까지 탐색하면 된다. 따라서 for i in range(len(문자열변수) - len(찾을 ..
[파이썬] 백준 2210 : 숫자판 점프 https://www.acmicpc.net/problem/2210 2210번: 숫자판 점프 111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111, 212121 이 가능한 경우들이다. www.acmicpc.net 실버 2 그래프, DFS, 브루트포스 접근 방문처리를 할 필요가 없으므로 브루트포스와 같은 접근을 해야 한다. 모든 좌표에 대한 DFS를 진행하고, 글자 수를 하나씩 채우다가 길이가 6이 되는 경우 그 문자열이 기존에 추가했던 적이 있는지 없는지를 확인하고 리스트에 추가한다. 마지막으로 해당 리스트의 길이를 출력한..
[파이썬] 백준 17626 : Four Squares https://www.acmicpc.net/problem/17626 17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1 www.acmicpc.net 실버 4 DP, 브루트포스 접근 DP문제에 대한 자신감을 박살내버리는 문제였다. 다른 사람 풀이를 보고도 좀처럼 이해가 되지 않아 골머리를 앓았다. 문제에 따르면 어떤 수든 간에 최대 4개가지의 제곱수의 합으로 표현이 된다고 해서 1부터 쭉 공책에 써봤다. 1 = 1^2 = 1개 2 = 1^2 * 2 = 2개..
https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 난이도 : 실버4 분류 : 브루트포스 코드 def han(N): cnt = 0 for i in range(1, N+1): lst = [] for j in str(i): lst.append(int(j)) if sum(lst)/len(lst) == (lst[0] + lst[len(lst)-1]) / 2: cnt += 1 else: continue return cnt N = int(input()) prin..
https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 난이도 : 실버5 분류 : 수학, 구현, 브루트포스 1 : 문자열을 이용한 풀이 lst = list(range(1, 10001)) wow = [] for i in range(len(lst)): for j in str(i): i += int(j) wow.append(i) wow.sort() for i in lst: if i not in wow: pr..
https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 알고리즘 분류 : 브루트 포스 1 : for문 중첩을 이용한 풀이(124ms) N, M = map(int, input().split()) lst = list(map(int, input().split())) nlst = [] for i in range(N): for j in range(i+1, N): for k in range(j+1, N): three = lst[i..