Algorithm - 수의 합
알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [수의 합] N개의 수로 된 수열 A[1], A[2], ... , A[N]이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i] + A[i+1] + A[i+2] + ... + A[j-1] + A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오. *입력 설명 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], ..., A[N]이 공백으로 분리되어 주어지며, 각각의 A[x]는 30,000을 넘지 않는 자연수이다. *출력 설명 첫째 줄에 경우의 수를 출력한다. 풀이(Py..
2021. 11. 7.
Algorithm - 카드 역배치
알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다. 개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다. 문제 [카드 역배치] 1부터 20까지 숫자가 하나씩 쓰인 20장의 카드가 아래 그림과 같이 오름차순으로 한 줄로 놓여 있다. 각 카드의 위치는 카드 위에 적힌 숫자와 같이 1부터 20까지로 나타낸다. 이제 다음과 같은 규칙으로 카드의 위치를 바꾼다. 구간 [a, b]가 주어지면 위치 a부터 위치 b까지의 카드를 현재의 역순으로 놓는다. (단, 1 ≤ a ≤ b ≤ 20) 예를 들어, 현재 카드가 놓인 순서가 위의 그림과 같고 구간이 [5, 10]으로 주어진다면 위치 5부터 위치 10까지의 카드 5, 6, 7, 8, 9, 10을 역순으로 하여 10, 9, 8, 7, 6,..
2021. 11. 7.