Problem Solving/BOJ

    [백준, BOJ 2225] 합분해 (java)

    출처-https://www.acmicpc.net/problem/2225 2225번: 합분해 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 내 생각 : dp[0]은 몇자리수로 나타내건 1가지는 꼭 가능하다. dp[n][k]는 패턴을 분석해보면 알겠지만 dp[n][k]=dp[n][k-1]+dp[n-1][k-1]+dp[n-2][k-1]+...+d[1][k-1]+dp[0][k-1]이다. 이 식만 알아내면 쉽게 풀 수 있다. import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner scan=new Scanner(System.in); int n=scan..

    [백준, BOJ 9461] 파도반 수열 (java)

    출처-https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 문제 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 � www.acmicpc.net 내 생각 : 험난한 DP 문제들을 풀던 중 만난 단비 같은 문제ㅎ 처음 문제 딱 들어가자마자 도형이 나와서 당황했지만, 문제에 은근히 발견하기 쉬운 패턴이 있어서 다행이었다. 우선 dp[0]=0, dp[1]=1, dp[2]=1는 주어졌고 dp[3]부터는 dp[i]=dp[i-3]+dp[i-2]라는 규칙이 있는 것을 알 수 있다. 따라서 이 식을 사용하여 문제를 풀면 됨. ==>> dp와 arr의..

    [백준, BOJ 2741] N 찍기 (java)

    출처-https://www.acmicpc.net/problem/2741 2741번: N 찍기 자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int num=scan.nextInt(); for(int i=1;i

    [백준, BOJ 11721] 열 개씩 끊어 출력하기 (java)

    출처-https://www.acmicpc.net/problem/11721 11721번: 열 개씩 끊어 출력하기 첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다. www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner scan=new Scanner(System.in); String str=scan.next(); int count=1; char c; for (int i=0;i

    [백준, BOJ 11720] 숫자의 합 (java)

    출처-https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int N=scan.nextInt(); String nums=scan.next(); char num; int sum=0; for (int i=0;i

    [백준, BOJ 11719] 그대로 출력하기 2 (java)

    출처-https://www.acmicpc.net/problem/11719 11719번: 그대로 출력하기 2 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이 www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner scan=new Scanner(System.in); String str; while(scan.hasNext()) { str=scan.nextLine(); System.out.println(str); } ..

    [백준, BOJ 11718] 그대로 출력하기 (java)

    출처-https://www.acmicpc.net/problem/11718 11718번: 그대로 출력하기 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시� www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); String str; while(scan.hasNext()) { str=scan.nextL..

    [백준, BOJ 11022] A+B - 8 (java)

    출처-https://www.acmicpc.net/problem/11022 11022번: A+B - 8 각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다. www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int totalNum = scan.nextInt(); int num1; int num2; for (int i=0;i

    [백준, BOJ 11021] A+B - 7 (java)

    출처-https://www.acmicpc.net/problem/11021 11021번: A+B - 7 각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다. www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int totalNum = scan.nextInt(); int num1 []=new int[totalNum]; int num2 []=new int[totalNum]; for (int i=0;i

    [백준, BOJ 2133] 타일 채우기 (java)

    출처-https://www.acmicpc.net/problem/2133 2133번: 타일 채우기 문제 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. 입력 첫째 줄에 N(1 ≤ N ≤ 30)이 주어진다. 출력 첫째 줄에 경우의 수를 출력한다. 예제 입력 1 복사 2 예제 출력 1 복�� www.acmicpc.net 내 생각 : 3xn은 맨 아래나 맨 위에 1x2 타일이 꼭 붙어있어야 하므로 n은 반드시 2의 배수여야만 타일을 꽉 채울 수 있다. 우선 n이 2일 때는 다음과 같은 모양의 3개의 패턴이 가능하다.(dp[2]=3) 또한 N이 2씩 커질때마다 다음과 같은 특수한 패턴이 2개씩 더 생긴다. (위 그림은 각각 n이 4, 6, 8일 때 생기는 특수한 패턴들이다.) 매번..