백준

알고리즘/동적 계획법(Dynamic Programming)

백준-1912-연속합

1. 문제 출처 https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 2. 풀이 DP방법중 BottomUp 방법을 이용하여 문제를 해결하였다. import sys n = int(sys.stdin.readline()) nums = list(map(int , sys.stdin.readline().split(" "))) dp =nums.copy() for i in range(1, n): dp[i] = max(dp[i-1]+dp[i],dp[i]) print(max(d..

알고리즘/동적 계획법(Dynamic Programming)

백준-11726-2Xn 타일링

1. 문제 출처 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 2. 풀이 맨 앞의 사각 형이 "|" 로 시작하거나 "=" 로 시작하는 경우 2개로 생각하면 된다. # 입력 import sys n = int(sys.stdin.readline()) if n

알고리즘/그리드 알고리즘

백준-1931-회의실 배정

1. 문제 출처 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 2. 풀이 제일 회의가 빨리 끝나는 순으로 생각해주는 그리디 알고리즘 문제이다. import sys # 입력받기 n = int(sys.stdin.readline()) greedy_list = [] for _ in range(n): start , end = map(int,sys.stdin.readline().split(" ")) greedy_list.append((start,end)) # 끝나는 시간을 기준으로 정렬 # 이때 끝나는 시간이 같ㅇ을 경우 시작하는 시간으로 정렬해야 한다. # 왜냐하면 ..

알고리즘/동적 계획법(Dynamic Programming)

백준-1003-피보나치 함수

1. 문제 출처 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 2. 풀이 Dynamic Programming botton up 방법을 사용하여 입력 받은 값 중 최대값의 0,1의 개수를 구하면 그 밑의 값은 dp배열에 저장되어 있다. 그것을 이용하여 풀면 다음과 같은 코드가 나온다. ## 입력 받는 부분 import sys t = int(sys.stdin.readline()) input_list = [] for i in range(t): input_list.append(int(sys.stdin.readline())) ## 입력받은 값중 최..

알고리즘/동적 계획법(Dynamic Programming)

백준-1463-1로 만들기

1. 문제 출처 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 2. 풀이 Dynamic Programming 방법 중 botton up 방법을 사용하여 문제를 해결하였다. # 입력받기 import sys n = int(sys.stdin.readline()) # 미리값을 저장할 배열 dp = [0] * (n+2) # 1~3까지는 바로 출력한다. if n==1: print(0) elif n==2 | n==3: print(1) else: dp[2] = 1 dp[3] = 1 for i in range(4, n+1): # 숫자가 i일 때 # 3가지 방법 중 최소 횟..

알고리즘/동적 계획법(Dynamic Programming)

백준-2579-계단 오르기

1. 문제 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 2. 해결법 n번째 계단으로 마무리 해야 하므로 각 계단에 도착했을 때 나올 수 있는 경우는 2가지이다. 1. n-2 번째 계단을 들린 후 오는 경우 2. n-3 , n-1번째 계단을 들린 후 오는 경우 두가지중 최대값을 선택하면 된다. 이를 코드로 나타내면 다음과 같다. # dp = 지난 계단의 정수 합을 저장하는 배열 # stairs = 각 계단에 적힌 정수값 dp[i] = (stairs[i]+..

알고리즘

[Python]1655-백준-가운데를 말해요

1. 문제 출처 https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 2. 문제 풀이 그냥 막무가내로 풀었을 때는 정상적으로 답이 나왔으나 시간이 초과되었다. n = int(input()) nums = [] nums.append(int(input())) print(nums[0]) if n >=2: for i in range(1,n): temp = int(input()) nums.append(temp) nums.sort() if len..

알고리즘/Dijkstra algorithm(데이크스트라 알고리즘)

[Python]4485-백준-녹색 옷 입은 애가 젤다지?

1. 문제 출처 https://www.acmicpc.net/problem/4485 4485번: 녹색 옷 입은 애가 젤다지? 젤다의 전설 게임에서 화폐의 단위는 루피(rupee)다. 그런데 간혹 '도둑루피'라 불리는 검정색 루피도 존재하는데, 이걸 획득하면 오히려 소지한 루피가 감소하게 된다! 젤다의 전설 시리즈의 주 www.acmicpc.net 2. 풀이 기본적인 데이크스트라 알고리즘을 사용하는 문제이다. 변형된 점은 인접한 노드를 구할 때 리스트나 메트릭스를 이용하는 것이 아닌 , 해당 좌표의 상하 좌우를 가지고 온다는 것이다. # 데이크스트라 알고리즘을 위한 힙 모듈 불러오기 import heapq # 입력 result = [] n = int(input()) while n!=0: #입력 graph =..

easysheep
'백준' 태그의 글 목록