본문 바로가기
728x90
반응형

백준 알고리즘/dp9

[백준 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.
[백준][파이썬] 쉬운 계단 수 10844 https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net n=1 : (1) n=2 : (1, 2), (1, 0) n=3 : (1, 2, 1), (1, 2, 3), (1, 0, 1) . . . 자세히 보면 어떠한 규칙이 존재한다. 먼저 n이 1에서 2로 넘어갈 때를 보자. n=1 에서 1 하나만 존재하는데 문제의 조건을 만족하기 위해서는 1다음에 1+1과 1-1이 존재해야한다. n이 2에서 3으로 넘어갈 때도 보자. (1, 2)에서 문제를 조건을 만족하기 위해서는 1, 2 다음에 2+1과 2-1이 존재해야한다. (1, 0)에서는 1, 0 다음에 0+1과 0-1이 존재해.. 2023. 1. 9.
[백준][파이썬] 알고리즘 문제 풀이 용 파이썬 문법 (업데이트 중) 그동안 항상 c++로만 알고리즘 문제를 풀었는데 코딩 테스트에는 파이썬을 사용하는 것이 더 좋다는 말을 듣고 파이썬으로 갈아탔다. 기초 문법 정도는 알고 있으나 다른 사람들의 풀이를 보니 여러 메소드를 사용하는 것을 보았고 주로 사용하는 메소드들을 정리해보려 한다.   입출력입력n=input()n이라는 변수에 키보드로부터 입력받은 값을 저장하려면 위처럼 input을 쓰면 된다. 기본적으로 입력받은 값은 문자열 취급을 하기 때문에 만약 정수를 입력받고 싶다면 아래처럼 형 변환을 해주면 된다.n=int(input()) 한 줄에 여러 개 입력split 메소드를 사용한다. split 함수는 인자로 받는 문자를 기준으로 문자열을 나누어서 리스트로 반환한다.a = "5,4,3" list = a.split(",")p.. 2023. 1. 8.
728x90
반응형