본문 바로가기

알고리즘/백준

(69)
[백준 / DP] 1253 : 좋다 (python) 문제 설명 문제 N개의 수 중에서 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면 그 수를 “좋다(GOOD)”고 한다. N개의 수가 주어지면 그 중에서 좋은 수의 개수는 몇 개인지 출력하라. 수의 위치가 다르면 값이 같아도 다른 수이다. 입력 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) 출력 좋은 수의 개수를 첫 번째 줄에 출력한다. 예제 입력 1 10 1 2 3 4 5 6 7 8 9 10 예제 출력 1 8 힌트 3,4,5,6,7,8,9,10은 좋다. 풀이 import sys input = sys.stdin.readline N = int(input()) A = sorted(..
[백준 / 구간 합 구하기] 11660 : 구간 합 구하기 5 (python) 문제 설명 문제 N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다. 예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자. 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다. 표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오. 입력 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채..
[백준 / 리스트] 25966 : 배찬우는 배열을 좋아해 (python) 문제 설명 문제 찬우는 오늘 프로그래밍 기초 강의에서 2차원 배열에 대해 배웠다. 너무 재미있던 찬우는 2차원 배열에다 연산을 진행하기로 결심했다. 아래와 같은 두 가지 종류의 연산이 쿼리로 주어진다. 0 i j k : i번 행의 j번 열의 값을 k로 바꾼다. 1 i j : i번 행과 j번 행을 swap한다. swap 이란 i번 행의 모든 원소와 j번 행의 모든 원소를 바꾸는 연산이다. q개의 쿼리를 수행한 후 바뀐 배열의 최종 결과를 출력하시오. 출력 q개의 쿼리를 전부 수행한 후의 2차원 배열을 출력한다. 예제 입력 1 4 3 4 # 행의 개수, 열의 개수, 쿼리 개수 10 3 8 # 2차원 배열 (4x3) 2 10 4 # 2차원 배열 (4x3) 1 8 4 # 2차원 배열 (4x3) 1 4 2 # 2..
[백준 / 누적 합] 11659 : 구간 합 구하기 4 (python) 문제 설명 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 제한 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 1 ≤ i ≤ j ≤ N 예제 입력 5 3 5 4 3 2 1 1 3 2 4 5 5 예제 출력 12 9 1 풀이 import sys input = sys.stdin.readline() numNo, quizNo = map(int, input().s..
[백준 / DP] 9095 : 1, 2, 3 더하기 (Java) import java.io.*; class Main{ public static void main(String args[]) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] dp = new int[11]; StringBuilder sb = new StringBuilder(); dp[1] = 1; dp[2] = 2; dp[3] = 4; for(int i=0; i1 1+1+1+2 > 4 1+1+3 > 3 1+2+2 > 3 2+3 > 2 [6] 24 1+1+1+1+1+1 >1 1+1+1+1+2 > 5 1+1+1..
[백준 / DP] 1463 : 1로 만들기 (Java) import java.io.*; import java.lang.Math; class Main{ public static void main(String args[]) throws IOException{ BufferedReader br = new BuffaeredReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] dp = new int[n+1]; dp[0] = 0; dp[1] = 0; for(int i=2; i 0) return dp[n]; dp[n] = recur(n-1) + 1; if(n%2==0){ dp[n] = Math.min(dp[n], recur(n/2)+1); } if(n%3==0){ dp..
[백준 / DP] 11727 : 2 x n 타일링 2 (Java) import java.io.*; class Main{ public static void main(String args[]) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] dp = new int[1001]; dp[1] = 1; dp[2] = 3; for(int i=3; i
[백준 / DP] 11726 : 2 x n 타일링 (Java) import java.io.*; class Main{ public static void main(String args[]) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] dp = new int[1001]; //n+1 하면 런타임 에러남 dp[1] = 1; dp[2] = 2; for(int i=3; i dp[i] = 2×i 크기의 직사각형을 채우는 방법의 수 2. 점화식 찾기 -> n이 1,2,3,4..일 때 방법이 몇가지 나오는지 직접 해보고, 그 안에서 규칙 찾기 n=1 > 1 n=2 > 2 n=3 ..

반응형