[백준] 1904번 01 타일 - Python
·
알고리즘
문제지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다.어느 날 짓궂은 동주가 지원이의 공부를 방해하기 위해 0이 쓰여진 낱장의 타일들을 붙여서 한 쌍으로 이루어진 00 타일들을 만들었다. 결국 현재 1 하나만으로 이루어진 타일 또는 0타일을 두 개 붙인 한 쌍의 00타일들만이 남게 되었다.그러므로 지원이는 타일로 더 이상 크기가 N인 모든 2진 수열을 만들 수 없게 되었다. 예를 들어, N=1일 때 1만 만들 수 있고, N=2일 때는 00, 11을 만들 수 있다. (01, 10은 만들 수 없게 되었다.) 또한 N=4일 때는 0011, 0000, 1001, 1100, 1111 등 총 5개의 2진 수..
[백준] 12865번 평범한 배낭 - Python
·
알고리즘
문제이 문제는 아주 평범한 배낭에 관한 문제이다. 한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다. 준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자. 입력첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어..
[백준] 2748번 피보나치 수 2 - Python
·
알고리즘
문제피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.n=17일때 까지 피보나치 수를 써보면 다음과 같다.0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.입력 첫째 줄에 n이 주어진다. n은 90보다 작거나 같은 자연수이다.출력 첫째 줄에 n번째 피보나치 수를 출력한다.예제 입력 110예제 출력 155 나의 첫 풀이# 사용자 입력n = int(input())# 함수 구현def fibo..
[백준] 11047번 동전 0 - Python
·
알고리즘
문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오입력준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오출력첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다.예제 입력 110 4200151050100500100050001000050000예제 출력 16문제 해석 # 필요한 동전 개수의 최소값 구하기 (거스름돈 문제와 유사)의사 코드 # 사용자 입력 받기 (동전의 종류 : N, 동전의 합 ..
[백준] 9251번 LCS - Python
·
알고리즘
문제LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.입력첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.출력첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.예제 입력 1ACAYKPCAPCAK예제 출력 14 문제 해석두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제다. 이 문제는 DP 접근 방식을 활용해 풀면 된다.  의사 코드# 1. 사용자 입력 받기 # 2. 2차원 행렬로 만들기 (편의상 ..
[백준] 1991번 트리 순회 - Python
·
알고리즘
문제이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오.예를 들어 위와 같은 이진 트리가 입력되면,전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식)중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식)후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트) 입력첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파벳 대문자로 매겨..
[백준] 11654번 아스키 코드 - Python3
·
알고리즘
문제 설명문제알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.입력알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다.출력입력으로 주어진 글자의 아스키 코드 값을 출력한다.출제 의도이 문제는 다음과 같은 프로그래밍 능력을 평가합니다.ASCII 코드 이해:문자와 숫자가 컴퓨터 내부에서 어떻게 표현되는지에 대한 기본적인 이해를 확인합니다.문자 처리: 프로그래밍에서 문자를 어떻게 다루는지, 특히 문자와 숫자 사이의 관계를 이해하고 있는지 평가합니다.입력 처리: 사용자로부터 입력을 받고 그것을 적절히 처리하는 능력을 테스트합니다.형 변환 개념: 문자를 해당하는 ASCII 값(정수)으로 변환하는 과정을 이해하고 있는지 확인합..
[백준] 15596번 정수 N개의 합 - Python3
·
알고리즘
문제 설명문제 정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오. 작성해야 하는 함수는 다음과 같다. a: 합을 구해야 하는 정수 n개가 저장되어 있는 리스트 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)리턴값: a에 포함되어 있는 정수 n개의 합 (정수)출제 의도이 문제는 다음과 같은 프로그래밍 능력을 평가합니다.내장 함수 sum()의 존재와 사용법 인지파이썬의 리스트 처리 방식 이해대량의 데이터(최대 3,000,000개의 요소)를 효율적으로 처리할 수 있는 방법 고안시간 복잡도와 공간 복잡도를 고려한 해결책 제시 입력값의 범위(0 ≤ a[i] ≤ 1,000,000)를 고려한 해결책 제시   정답 코드 모법 답안def solve(a): return sum..