https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 백준 1302번 베스트셀러 문제 링크입니다. 핵심 가장 많이 나온 이름을 구하는 것이다. 이는 Hash를 사용하여 풀 수 있다. value가 같은 값일 때는 사전 순으로 정렬을 해야 한다. 정답 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(S..
https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 백준 1026번 보물 문제 링크입니다. 핵심 A와 B배열을 받아서 두 배열의 값들을 곱해서 최솟값을 만드는 것이다. 쉽게 생각하면, 큰 값과 큰 값이 곱해지면 총합이 커지게 된다. 즉 작은 값과 큰 값을 곱해야 한다. 정답 코드 import java.util.Arrays; import java.util.Collections; import java.util.Scanner; public cla..
https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net 백준 1373번 2진수 8진수 문제 링크입니다. 핵심 2진수를 받고서, 그 수를 8진수로 바꾸는 것이다. 문제만 두고 본다면 쉬운 문제이다. 단 10000000의 길이까지 범위가 커질 수 있다. 즉 일반적으로 int 형을 받을 수 없다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; public class Main { p..
https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 백준 1259번 팰린드롬수 문제 링크입니다. 핵심 이번 문제는 팰린드롬수 문제이다. 1부터 99999까지 숫자가 주어지는데, 이때 중심을 기준으로 좌우가 같은지 판단하여야 한다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static..
https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 1932번 정수 삼각형 문제 링크입니다. 핵심 이번 문제도 동적 계획법 문제이다. 위에서부터 숫자가 내려가며 합해지는데, 대각선으로 갈 수 있다. 이중 배열을 사용하여 줄의 위치는 앞에 각 값은 뒤에 넣는다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt..
https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 백준 1149번 RGB거리 문제 링크입니다. 핵심 문제를 요약해보면, N개의 집이 있고, 인접한 집은 같은 색을 칠하지 못한다. 각 집마다 빨강, 초록, 파랑의 비용을 준다. DP를 사용하는데, 최소 비용만을 구하는 것이 목적이다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.I..
https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 백준 11053번 가장 긴 증가하는 부분 수열 문제 링크입니다. 핵심 동적 계획법을 사용하여 푸는데, 증가하는 수열을 만들 때, 가장 큰 길이를 구하는 것이다. 그전 값을 비교하며 더 커지면 dp를 증가시키는 형태이다. 정답 코드 import java.util.Scanner; public class Main { publ..
https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 백준 2156번 포도주 시식 문제 링크입니다. 핵심 이 문제는 저번에 풀었던 계단 오르기와 매우 유사한 문제이다. https://kimtaesoo99.tistory.com/31 [백준]2579번 계단 오르기 https://www.acmicpc.net/problem/2579 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점" data-og-host="www.a..
https://www.acmicpc.net/problem/1094 1094번: 막대기 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대 www.acmicpc.net 백준 1094번 막대기 문제 링크입니다. 핵심 문제를 해석해보면 매우 쉬운 문제라는 것을 알 수 있다. 64보다 작거나 같은 자연수를 2진수로 바꾸었을 때, 1의 개수를 구하는 것이다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(..
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 백준 1463번 1로 만들기 문제 링크입니다. 핵심 단순하게 3으로 나누고, 2로 나누고, 1을 빼는 순서로 풀게 된다면, 함정에 걸린 것이다. 바로 10이 그 예시이다. 제일 적게 조합해서 만드는 방법을 0부터 차례대로 생각해야 한다. 정답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main{ public static void main(String[] args..