본문 바로가기

전체 글219

Algorithm - 동전교환(냅색 알고리즘) 알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [동전교환(냅색 알고리즘)] 여러 단위의 동전들이 주어져 있을 때, 거스름돈을 가장 적은 수의 동전으로 교환해주는 프로그램을 작성하시오. 단, 각 단위의 동전은 무한정 사용할 수 있다. *입력 설명 첫 번째 줄에 동전의 종류 개수인 N(1 ≤ N ≤ 12)이 주어진다. 두 번째 줄에는 N개의 동전 종류가 주어진다. 세 번째 줄에는 거슬러 줄 금액 M(1 ≤ M ≤ 500)이 주어진다. 단, 각 동전의 종류는 100원을 넘지 않는다. *출력 설명 첫 번째 줄에 거슬러 줄 동전의 최소개수를 출력한다. 풀이(Python) 답안 import sys sys.stdin = .. 2022. 2. 5.
Algorithm - 가방문제(냅색 알고리즘) 알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [가방문제(냅색 알고리즘)] 최고 17kg의 무게를 저장할 수 있는 가방이 있다. 그리고 3kg, 4kg, 7kg, 8kg, 9kg의 무게를 가진 5종류의 보석이 있다. 이 보석들의 가치는 각각 4, 5, 10, 11, 13이다. 이 보석을 가방에 담는데 17kg를 넘지 않으면서 최대의 가치가 되도록 만드는 프로그램을 작성하시오. 단, 각 종류별 보석의 개수는 무한정 존재하며 한 종류의 보석을 여러 번 가방에 담을 수 있다. *입력 설명 첫 번째 줄에 보석 종류의 개수와 가방에 담을 수 있는 무게의 한계값이 주어진다. 두 번째 줄부터 각 보석의 무게와 가치가 주어.. 2022. 2. 5.
TIL - 22.02.04 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 2월 4일(금) lambda expressions lambda란? 람다(lambda)는 인라인 함수를 정의할 때 사용하며, 익명함수 또는 람다 표현식이라고 부른다. 람다 표현식은 일반함수와 달리 함수의 이름이 없고, 인라인 형식의 간단한 표현만 올 수 있으며 return문 없이도 표현식의 결과가 반환된다는 것이다. 람다 표현식은 주로 간단한 함수 대신 사용되며, 인라인 표현식으로 작성되기 때문에 코드가 간결해지는 장점이 있다. (간단한 함수임에도 함수이름을 만들어야 하며, 다른 함수이름과의 충돌 가능성을 고려해야 하는 불편함을 해소할 수 있음) 람다 표현식은 nested(중첩) 될 수도 있고 복잡한 구조를 가질 수도 있지만.. 2022. 2. 4.
Algorithm - 알리바바와 40인의 도둑(동적 계획법) 알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [알리바바와 40인의 도둑(동적 계획법)] 알리바바는 40인의 도둑으로부터 금화를 훔쳐 도망치고 있다. 알리바바는 평소에 잘 가지 않던 계곡의 돌다리로 도망가고자 한다. 계곡의 돌다리는 N*N개의 돌로 구성되어 있으며, 각 돌다리들은 높이가 서로 다르다. 해당 돌다리를 건널 때 돌의 높이만큼 에너지가 소비되며, 반드시 최단거리로 이동한다. 즉, 현재지점에서 오른쪽 또는 아래쪽으로만 이동해야 한다. N*N의 계곡 돌다리 격자정보가 주어지면, (1, 1)에서 (N, N)까지 가는데 드는 에너지의 최소량을 구하는 프로그램을 작성하시오. 만약, 위의 예시처럼 N=3인 돌.. 2022. 2. 4.
TIL - 22.02.03 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 2월 3일(목) generators generator란? generator는 iterator를 생성해주는 function이다. (iterator는 next() 메소드로 데이터에 순차적으로 접근할 수 있는 객체임) generator는 일반적인 함수와 비슷해 보이지만, 가장 큰 차이점은 yield를 사용하는 것이다. generator 함수가 실행 중에 yield를 만나면, 해당 함수는 그 상태로 정지되며 반환 값을 next()가 호출한 쪽으로 전달하게 된다. 이후 해당 함수는 일반적인 경우처럼 종료되는 것이 아니라 그 상태로 유지된다. 즉, 함수에서 사용된 local 변수나 instruction pointer 등과 같은 함수 .. 2022. 2. 3.
Algorithm - 가장 높은 탑 쌓기(LIS 응용) 알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [가장 높은 탑 쌓기(LIS 응용)] 밑면이 정사각형인 직육면체 벽돌을 사용하여 탑을 쌓고자 한다. 탑은 벽돌을 한 개씩 아래에서 위로 쌓으면서 만들어 간다. 아래의 조건을 만족하면서 가장 높은 탑을 쌓을 수 있는 프로그램을 작성하시오. (조건 1) 벽돌은 회전시킬 수 없다. 즉, 옆면을 밑면으로 사용할 수 없다. (조건 2) 밑면의 넓이가 같은 벽돌은 없으며, 무게가 같은 벽돌도 없다. (조건 3) 벽돌들의 높이는 같을 수 있다. (조건 4) 탑을 쌓을 때, 밑면이 좁은 벽돌 위에 밑면이 넓은 벽돌을 놓을 수 없다. (조건 5) 무게가 무거운 벽돌을 무게가 가벼.. 2022. 2. 3.