본문 바로가기
728x90

알고리즘316

[python] 백준 1940 주몽 https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 문제 해결 두 수의 합이 특정한 수(m)이 되야함. 리스트를 올림차순으로 정렬하고 투포인터를 이용해 두 수의 합을 구한다. 두 수의 합이 m보다 크면 오른쪽 포인터를 왼쪽으로 옮긴다. 두 수의 합이 m보다 작으면 왼쪽 포인터를 오른쪽으로 옮긴다. 두 수의 합이 m과 같으면 정답 ans를 1을 올리고 왼쪽 포인터를 오른쪽으로 한 칸, 오른쪽 포인터를 왼쪽으로 한 칸 옮겨서 .. 2023. 2. 18.
[python] 백준 14225 부분수열의 합 https://www.acmicpc.net/problem/14225 14225번: 부분수열의 합 수열 S가 주어졌을 때, 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 구하는 프로그램을 작성하시오. 예를 들어, S = [5, 1, 2]인 경우에 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)을 만들 www.acmicpc.net 문제 해결 중간에 빠진 수를 어떻게 구할 것인가?: 우선은 sort()를 통해 작은수부터 놓는 것이 우선일 것이다. 맨 앞의 수는 1일 것이다. 두 번째 수는 2가 와도 되고 1이 추가로 와도 된다. 두 번째 수가 1이면 세 번째는 3이하의 수가 올 것이다. (1, 2, 3 모두 가능하다는 것이다.) 두 번째 수가 2이면 세 번째.. 2023. 2. 10.
[python] 백준 1339 단어 수학 https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 문제 해결 모든 알파벳에 1을 대입 했을 때 자리수를 고려하여 큰 수부터 차례대로 9부터 1까지 넣으면 될 것이다. ex) ABA + ABCA : A = 101+1001 = 1102, B = 10+100 = 110, C = 10 A = 9대입 B = 8 대입, C = 7대입 CODE import sys n = int(input()) # 단어 개수 S = [] # 단어를 저장할 리스트 M = .. 2023. 2. 8.
[python] 백준 2250 트리의 높이와 너비 https://www.acmicpc.net/problem/2250 2250번: 트리의 높이와 너비 첫째 줄에 노드의 개수를 나타내는 정수 N(1 ≤ N ≤ 10,000)이 주어진다. 다음 N개의 줄에는 각 줄마다 노드 번호와 해당 노드의 왼쪽 자식 노드와 오른쪽 자식 노드의 번호가 순서대로 주어진다. www.acmicpc.net 문제해결 중위 순회(incoder)(왼쪽 하위트리 → 루트 → 오른쪽 하위 트리 방향) 방식으로 보며 되며 그 순서를 x축에 표현한 것으로서 num이라는 변수로 표현하였으며 그 때의 깊이(level)을 index로 하여 row리스트에 저장을 한다.(append) row리스트에 모든 로드를 저장한 후 level=1부터 level=n까지 각 레벨에서 최대 x축(num)값을 가진 노드.. 2023. 2. 1.
728x90