본문 바로가기
728x90
반응형

백준 알고리즘55

[백준 1065][파이썬] 한수 https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net cnt라는 변수를 만들고 반복문으로 1부터 입력받은 값까지 한수가 있으면 cnt 값을 1씩 증가시키면 된다. 한수가 되기 위해서는 연속된 값의 차이를 모두 조사해서 조사한 값들이 모두 같아야 한다. 연속된 값의 차이를 구하기 위해서 해당 숫자의 각 자릿수를 모두 리스트의 요소로 만들어주면 쉽게 구할 수 있다. s=list(map(int, str(n)))​ 그리고 연속된 값의 차이가 모두 같은지 확인하.. 2023. 1. 16.
[백준 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 일단 dp[i]의 값을 i를 제곱수들의 합으로 표현할 때 최소 개수로 정한다. 그렇게 되면 dp[i]의 값은 dp[1] + dp[i-1] dp[2] + dp[i-2] dp[3] + dp[i-3] . . . 위 값들 중 가장 작은 값이 된다. 처음엔 위 방식으로 이중 반복문을 돌려서 답을 구했으나 시간 초과가 발생했다. 시간을 더 줄일 수 있는 알고리즘을 사용.. 2023. 1. 14.
[백준 1912][파이썬] 연속 합 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 연속된 몇 개의 정수를 골라 합이 가장 큰 값을 구해야한다. 일단 가장 간단한 알고리즘을 생각해보면 이중 반복문으로 모든 연속된 부분 수열의 합을 구하는 것이다. 물론 이 방법으로 구현하게 되면 시간 초과가 발생한다. 조금 더 시간을 단축하는 알고리즘을 사용해야한다. 일단 기본적으로 dp[i]에 입력받은 수열의 인덱스 0부터 i까지의 부분 수열의 합을 저장한다. 이렇게 구하다가 어느 조건을 만족하면 인덱스의.. 2023. 1. 13.
[백준 11055, 11722, 11054][파이썬] 증가, 감소하는 수열 dp 문제 백준 문제 11055, 11722, 11054는 비슷한 문제로 묶어서 풀이를 해보려한다. 먼저 11055번 문제이다. https://www.acmicpc.net/problem/11055 11055번: 가장 큰 증가 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수 www.acmicpc.net 이 문제를 푸는 가장 간단한 알고리즘은 이중 반복문을 사용하여 전부 조사하는 방법이다. 이 방법도 좋은 방법이지만 더 빠른 방법을 사용해보려 한다. 간단하게 1,3,2,6,9 라는 수열이 있다고 해보자. 이 수열의 값을 배.. 2023. 1. 11.
728x90
반응형