본문 바로가기

Algorithm37

[프로그래머스/Python][정렬]K번째 수 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 문제 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 .. 2020. 11. 22.
[BOJ/C++]9461번 파도반 수열 www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 � www.acmicpc.net 문제 정삼각형이 나선 모양으로 추가되었을 때, 처음부터 추가되는 정삼각형 변의 길이의 수열을 파도반 수열이라고 함. 첫 10개 숫자는 1,1,1,2,2,3,4,6,7,9 N이 주어졌을 때 P(N)을 구하는 프로그램 풀이 처음에 점화식을 잘못 구해 고생했던 문제. 나 같은 경우에는 문제를 제대로 안 읽고 위에서 나열한 숫자의 일부(4까지)만 보고 P(n)=P(n-2)+P(n-3)으로 생각했다. 문제에서 준 예시 아.. 2020. 9. 5.
[BOJ/C++]11052번 카드 구매하기 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 문제 카드 n개가 포함된 카드팩 n가지가 존재. 카드가 i개 포함된 카드팩의 가격은 $P_i$원. 이 카드팩 가격을 최대로 해서 n개의 카드를 구매하는 경우를 구하는 문제. 풀이 https://lionontheshore.tistory.com/51 [BOJ/C++]1699번 제곱수의 합 https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+1.. 2020. 8. 18.
[BOJ/C++]1699번 제곱수의 합 https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 문제 자연수 n을 $11=2^2+2^2+1^2+1^2+1^2$ 혹은 $11=3^2+1^2+1^2$와 같은 제곱수들의 합으로 나타낼 수 있다. 이때 표현할 수 있는 제곱수 항의 최소 개수를 구해라. 풀이 i가 제곱수로 표현가능한 경우, 즉 i=j*j인 경우는 dp[i]가 1이다. 그 경우 dp[i]에 1을 넣어주고, 그 외에 경우에는 일단 dp[i]=dp[i-.. 2020. 8. 18.
[BOJ/C++]2579번 계단오르기 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제 계단을 밟으면 그 계단의 점수를 얻음. 이 점수의 최댓값을 찾는 문제. 다만 계단은 한번에 한칸 혹은 두칸 오를 수 있음. 연속된 세칸 오르면 안됨(시작점은 포함x).->ex: 에서 10,20,15를 밟으면 안됨. 10,20,25는 ok 마지막 계단은 모두 밟아야 함. 풀이 arr[n+1]에 계단의 점수를 받고 dp[n+1]에 i번째 계단을 밟았을 때 최댓값을 넣었다. 그래서 마지막에 dp[n]을 출력한.. 2020. 8. 18.
[BOJ/C++]1912번 연속합 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 크기가 n인 정수 배열에서 연속된 수의 합이 가장 큰 값을 출력하라. 풀이 i번까지의 연속 수 합이 가장 큰 dp[i]를 이용해 다이나믹 프로그래밍으로 푼다. dp[i]는 dp[i-1]+arr[i]와(i-1번째까지 연속 수 합이 가장 큰 수+i번째 배열의 수) arr[i]를 비교해 더 큰 값이 dp[i]에 들어간다. 소스코드 #include using namespace std; int main(void){ int n;cin>>n; int arr[n+1]; for(in.. 2020. 7. 29.