Problem Solving/BOJ

    [백준, BOJ 11057] 오르막 수 (java)

    출처-https://www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수� www.acmicpc.net 내가 푼 방식 : dp[i][j]는 dp[i-1][j]부터 dp[i-1][10]까지 올 수 있다. import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scann..

    [백준, BOJ 10844] 쉬운 계단 수 (java)

    출처-https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 내가 푼 방식 : dp[i][0]는 dp[i-1][1]일 경우에만 올 수 있다. dp[i][j=1]~dp[i][j=8]은 각각 dp[i-1][j-1]와 dp[i-1][j+1]인 경우에 올 수 있다. dp[i][9]는 dp[i-1][8]일 경우에만 올 수 있다. import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new ..

    [백준, BOJ 9095] 1, 2, 3 더하기 (java)

    출처-https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 www.acmicpc.net 내가 푼 방식 : dp[i]는 dp[i-1]에서 1을 더한 경우, dp[i-2]에서 2를 더한 경우, dp[1-3]에서 3을 더한 경우와 동일하며 서로 겹치는 경우는 없으므로 dp[i]=dp[i-1]+dp[i-2]+dp[i-3] 이다. import java.util.Scanner; public class Main { pu..

    [백준, BOJ 11727] 2xn 타일링 2 (java)

    출처-https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 내가 푼 방식 : '11726' 번과 동일한 방식으로 풀었다. 다만 (1x2 타일이 위아래로 붙어있는 모양, 2x2 타일 하나) 이 두 가지가 결과적으론 2x2 모양의 타일로 보이므로 '11726' 번에서 dp[i]=dp[i-1]+dp[i-2]*2 로 구현해주었다. import java.util.Scanner; public class Main { public static void main(String[] args) { /..

    [백준, BOJ 11726] 2xn 타일링 (java)

    출처-https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 내가 푼 방식 : dp[i]는 dp[i-1]에서 2x1 타일 하나를 덧붙인 모양과 같다. 또한 dp[i-2]에서 1x2 타일을 덧붙인 모양과 같다. 두 경우는 겹치는 경우가 없으므로 dp[i]=dp[i-1]+dp[i-2]이다. import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-gener..

    [백준, BOJ 1463] 1로 만들기 (java)

    출처-https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 내가 푼 방식 :1에서 n에 접근하기 위한 최단거리를 구해준다. dp[1]~dp[n]인 배열을 생성한다. i가 1부터 시작해서 n까지 i (+1 or *2 or *3) 해서 최단 루트로 n에 도달할 수 있는 경우의 수를 찾는다. DP 관련 문제 중 첫번째로 풀었던 문제. 이 문제를 풀 때까지만 해도 DP 개념이 이해가 잘 안 됐었다. 그래서 보기 편하게 표로 과정을 나타내 봤다. 이렇게 한번 그려보고 나니까 머릿속이 정리가 됐다. 다음 DP 풀 때부터는 이걸 바탕으로 머리로 그려보며 풀어서 좀 더 수월했다..

    [백준, BOJ 10952] A+B -5 (java)

    출처 - https://www.acmicpc.net/problem/10952 10952번: A+B - 5 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 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 num1; int num2; while(true) { num1=scan.nextInt(); num2=scan.nextInt(); if ((num1==0)&&(num2==0)) break; else System...

    [백준, BOJ 10951] A+B -4 (java)

    출처 - https://www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 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 num1; int num2; while (scan.hasNextInt()) { num1=scan.nextInt(); num2=scan.nextInt(); System.out.println(num1+num2); ..

    [백준, BOJ 10950] A+B -3 (java)

    출처 - https://www.acmicpc.net/problem/10950 10950번: A+B - 3 두 정수 A와 B를 입력받은 다음, 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 []=new int[totalNum]; int num2 []=new int[totalNum]; for (int i=0;i

    [백준, BOJ 2558] A+B -2 (java)

    출처 - https://www.acmicpc.net/problem/2558 2558번: A+B - 2 첫째 줄에 A, 둘째 줄에 B가 주어진다. (0 < A, B < 10) 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 num1=scan.nextInt(); int num2=scan.nextInt(); int sum=num1+num2; System.out.println(sum); } }