본문 바로가기 메뉴 바로가기

혯의 코딩블로그

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

혯의 코딩블로그

검색하기 폼
  • 분류 전체보기 (96)
    • 개발자를 위한 한 걸음 (95)
      • 코딩 문제 (94)
      • 프로젝트 (1)
    • 생각 정리 (1)
  • 방명록

다이나믹 프로그래밍 (6)
연속합 - 백준 #1912, 실버2, 다이나믹 프로그래밍

문제 링크 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 풀이 # 입력받기 n = int(input()) arr = list(map(int, input().split())) # 주어진 배열에서 연속합 중 최댓값 반환 def max_continuous_sum(arr): dp = [0] * len(arr) dp[0] = arr[0] max_sum = dp[0] for i in range(1, len(arr)): dp[i] = max(dp[i-1] + arr[i], arr[i]) max_sum = max(max_sum, d..

개발자를 위한 한 걸음/코딩 문제 2023. 4. 9. 10:38
코딩 테스트 공부 - 프로그래머스 lv.3, DP

문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 당신은 코딩 테스트를 준비하기 위해 공부하려고 합니다. 코딩 테스트 문제를 풀기 위해서는 알고리즘에 대한 지식과 코드를 구현하는 능력이 필요합니다. 알고리즘에 대한 지식은 알고력, 코드를 구현하는 능력은 코딩력이라고 표현합니다. 알고력과 코딩력은 0 이상의 정수로 표현됩니다. 문제를 풀기 위해서는 문제가 요구하는 일정 이상의 알고력과 코딩력이 필요합니다. 예를 들어, 당신의 현재 알고력이 15, 코딩력이 10이라고 가정해보겠습니다. A라는 문제가 알고력 10, 코딩력 10을 요구한다면 A 문제를 풀 수 있습니다. B라는 문제가 알고력 10, 코딩력 20을 요구한다면 코딩력이 부족하기 때문에 B 문제를 풀 수 없습니다. 풀 수 ..

개발자를 위한 한 걸음/코딩 문제 2023. 2. 18. 21:58
퇴사 - 백준 #14501, 다이나믹 프로그래밍/브루트포스 알고리즘

문제 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다. N = 7인 경우에 다음과 같은 상담 일정표를 보자. 1일 2일 3일 4일 5일 6일 7일 Ti 3 5 1 1 2 4 2 Pi 10 20 10 20 15 40 200 1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 잡혀있는 상담은 총 2일이 걸리며, 받을 수 있는 금액은 15..

개발자를 위한 한 걸음/코딩 문제 2023. 2. 5. 10:55
가장 큰 증가 부분 수열 - 백준 #11055, 다이나믹 프로그래밍

문제 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수열은 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 이고, 합은 113이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 합이 가장 큰 증가 부분 수열의 합을 출력한다. 예제 입력 출력 10 1 100 2 50 60 3 5 6 7 8 113 풀이 N = int(input()) A = list(map(int..

개발자를 위한 한 걸음/코딩 문제 2023. 1. 26. 22:23
1, 2, 3 더하기 4 - 백준 #15989, 다이나믹 프로그래밍

문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 1+3 (3+1) 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 10,000보다 작거나 같다. 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 예제 입력 1 3 4 7 10 예제 출력 1 4 8 14 풀이 import sys from..

개발자를 위한 한 걸음/코딩 문제 2022. 12. 19. 18:09
계단 오르기 - 백준 #2579, 다이나믹 프로그래밍

계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 계단은 반드시 밟아야 한다. 따라서 첫 번째 계단을 밟고 ..

개발자를 위한 한 걸음/코딩 문제 2022. 11. 14. 14:12
이전 1 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
  • 백준
  • 릿코드
  • 백트래킹
  • 그리디 알고리즘
  • 정렬
  • 코딩 테스트
  • 카카오 코딩테스트
  • 수학
  • 시뮬레이션
  • lv.3
  • 다이나믹 프로그래밍
  • 코드트리
  • 실버2
  • 너비 우선 탐색
  • 카카오
  • 문자열
  • leetcode
  • 골드5
  • 실버3
  • 코딩테스트
  • 구현
  • 깊이 우선 탐색
  • Python
  • 브루트포스 알고리즘
  • 프로그래머스
  • 그래프 탐색
  • lv.2
  • 리트코드
  • 그래프 이론
  • Simulation
more
«   2025/08   »
일 월 화 수 목 금 토
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바