본문 바로가기
반응형

Algorithm/이것이 코딩테스트다34

[Python][이코테] 다이나믹 프로그래밍(DP) 다이나믹 프로그래밍 Dynamic Programming 모든 프로그램은 컴퓨터의 연산 속도와 한정된 메모리 공간에 제한되어 있다. 다이나믹 프로그래밍은 이러한 제한 속에서 우리는 주어진 요소들을 최대한으로 활용하는 효율적인 알고리즘을 작성해야 한다. 다이나믹 프로그래밍은 동적 프로그래밍, 동적 계획법 이라고도 한다. 피보나치 수열 다이나믹 프로그래밍으로 해결할 수 있는 대표적인 문제로 피보나치 수열이 있다. 피보나치 수열을 우리가 학창 시절 배운 점화식을 이용해 풀어보면 HTML 삽입 미리보기할 수 없는 소스 피보나치는 첫 번째 항과 두 번째 항이 1이기 때문에 위와 같이 정의된다. 즉 n번째 피보나치 수 = (n - 1)번째 수 + (n - 2)번째 수 단, 1번째와 2번째 수는 1 이를 코드로 구현하.. 2022. 10. 22.
[Python][이코테] 떡볶이 떡 만들기 오늘 동빈이는 여행가신 부모님을 대신해서 떡집 일을 하기로 했다. 오늘은 떡볶이 떡을 만드는 날이다. 동빈이네 떡볶이 떡은 재밌게도 떡볶이 떡의 길이가 일정하지 않다. 대신에 한 봉지 안에 들어가는 떡의 총 길이는 절단기로 잘라서 맞춰준다. 절단기에 높이(H)를 지정하면 줄지어진 떡을 한 번에 절단한다. 높이가 H보다 긴 떡은 H 위의 부분이 잘릴 것이고, 낮은 떡은 잘리지 않는다. 예를 들어 높이가 19, 14, 10, 17cm인 떡이 나란히 있고 절단기 높이를 15cm로 지정하면 자른 뒤 떡의 높이는 15, 14, 10, 15cm가 될 것이다. 잘린 떡의 길이는 차례대로 4, 0, 0, 2cm이다. 손님은 6cm만큼의 길이를 가져간다. 손님이 왔을 때 요청한 총 길이가 M일때 적어도 M만큼의 떡을 얻.. 2022. 10. 17.
[Python][이코테] 부품 찾기 입력 조건 첫째 줄에 정수 N이 주어진. (1 ≤ N ≤ 1,000,000) 둘째 줄에는 공백으로 구분하여 N개의 정수가 주어진다. 이때 정수는 1보다 크고 1,000,000이하이다. 셋째 줄에는 정수 M이 주어진다. (1 ≤ M ≤ 100,000) 넷째 줄에는 공백으로 구분하여 M개의 정수가 주어진다. 이때 정수는 1보다 크고 1,000,000이하이다. 출력 조건 첫째 줄에 공백으로 구분하여 각 부품이 존재하면 yes를, 없으면 no를 출력한다. 입력 예시 5 8 3 7 9 2 3 5 7 9 출력 예시 no yes yes 앞선 이진탐색 알고리즘을 연습하기위해 재귀와 반복문 두가지 방법을 사용했고 추가적으로 만약 이걸 상관없이 풀었을 경우 코드 또한 풀었다. 1. 이진탐색 재귀 # 7-3 이진 탐색 부품.. 2022. 10. 14.
[Python][이코테] 이진 탐색 이진 탐색 Binary Search 이진 탐색은 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는 알고리즘이다. 이미 정렬되어 있다면 매우 빠르게 데이터를 찾을 수 있다는 특징이 있다. 이진 탐색은 탐색 범위를 절반씩 좁혀가며 데이터를 찾는 방법이다. 이진 탐색은 변수 3개를 사용한다. 시작점, 끝점 그리고 중간점 예를들어 0 2 4 6 8 10 12 14 16 18 의 배열에서 4를 찾는다고 가정하자 0 2 4 6 8 10 12 14 16 18 우선 시작점은 [0], 끝점은 [9] 중간점은 9/2 = 4.5 에서 소수점은 버려서 [4]로 지정한다. [0] = 0, [9] = 18, [4] = 8 [4]의 데이터와 찾으려는 값 4를 비교한다. [4]의 값이 더 크므로 중간점 이후의 값은 확인할 필요.. 2022. 10. 13.
반응형