✔ 평범한 배낭[백준 12865]코드 구현하기 무게 0무게 1무게 2무게 3무게 4무게 5무게 6무게 7아이템 000000000아이템 10000001313아이템 20000881313아이템 30006881314(8 + 6)아이템 400068121314/* * 문제 분석하기 * : 배낭에 넣을 수 있는 각 무게에 따른 물건의 최대 가치를 구하도록 함 *//* * 손으로 풀어보기 * 1. 아이템과 무게에 따른 가치 테이블을 생성 * 2. 가치의 최대값을 출력 *//* * 12865) 평범한_배낭 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static in..
✔ 호텔[백준 1106]코드 구현하기/* * 문제 분석하기 * : 고객의 수에 따른 투자해야 하는 돈의 최소값들을 구해 이를 이용해 계속해서 다음 고객의 수에 따른 비용을 구함 * 이때 적어도 C명이므로 최소 비용을 가지고 C명보다 많은 고객을 확보할 때도 가능하게 됨 *//* * 손으로 풀어보기 * 1. 고객의 수에 따른 비용 테이블을 생성 * 2. 고객(적어도 C명에서 C + 100명)을 확보하는데 사용되는 최소 비용으로 갱신 *//* * 1106) 호텔 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int C, N; static..
✔ 행복 유치원[백준 13164]코드 구현하기/* * 문제 분석하기 * : 원생끼리의 키 차이를 구한 후, N명의 학생들을 K개의 그룹으로 나눈다고 하였으므로 * N - K개의 가장 큰 키 차이 값을 무시하여 제외하고 작은 키 차이 값들을 그룹의 개수에 합쳐 주도록 함 * 예) 1, 3, 5, 6, 10 (2, 2, 1, 4의 키 차이) → 2, 4의 키 차이 값 제외 → 1,3 / 5,6 / 10 *//* * 손으로 풀어보기 * 1. 원생끼리의 키 차이를 구하기 * 2. N - K개의 가장 큰 키 차이 값을 무시 * 3. 나머지 키 차이 값들을 합쳐서 출력하기 *//* * 13164) 행복_유치원 */public class Main { static BufferedReader br = n..
✔ 이진 검색 트리[백준 5639]코드 구현하기/* * 문제 분석하기 * : 전위 순회의 경우, 처음 탐색한 값이 루트이므로 이를 이용해 작으면 왼쪽 자식, 크면 오른쪽 자식으로 순회하며 재귀 탐색 *//* * 손으로 풀어보기 * 1. 루트 노드를 설정 * 2. 루트보다 작으면 왼쪽 자식, 루트보다 클 경우 오른쪽 자식으로 하며 탐색 *//* * 5639) 이진_검색_트리 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static Node root; // root(루트 노드) /* * Node(트리의 노드 정보를 담은 클래스) */ ..
✔ 문제 추천 시스템 Version 1[백준 21939]코드 구현하기/* * 문제 분석하기 * : 추천 문제 리스트를 어려운 레벨, 쉬운 레벨을 기준으로 두 개의 우선순위 큐에 저장하고 명령어에 따라 추천하도록 함 *//* * 손으로 풀어보기 * 1. 명령어가 recommend일 경우, 1이면 최대값 우선순위 큐에서 -1이면 최소값 우선순위 큐에서 문제를 선택해 추천 * 2. 명령어가 add일 경우, 추천 문제를 최소값, 최대값 우선순위 큐에 저장 * 3. 명령어가 solved일 경우, 두 우선순위 큐에서 문제를 제거 *//* * 21939) 문제_추천_시스템_Version_1 */public class Main { static BufferedReader br = new BufferedRead..
✔ 탑[백준 2493]코드 구현하기/* * 문제 분석하기 * : 자신보다 큰 높이의 탑을 발견할 경우 이 탑이 수신받도록 함 *//* * 손으로 풀어보기 * 1. 스택이 비어있다면 수신할 탑이 없으므로 0 * 2. 스택의 맨 윗부분 탑의 높이가 지금 들어오는 탑의 높이보다 크다면 이 탑으로 수신 가능 * 3. 스택의 맨 윗부분 탑의 높이가 지금 들어오는 탑의 높이보다 작거나 같다면 이 탑으로 수신할 수 없게 되므로 스택에서 제거 * 4. 이를 반복하며 스택의 맨 윗부분 탑을 수신하는 탑으로 갱신 *//* * 2493) 탑 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.i..
✔ 트리와 쿼리[백준 15681]코드 구현하기/* * 문제 분석하기 * : 트리를 DFS로 재귀적으로 탐색하면서 각 정점에 대한 서브트리 수를 구하도록 함 *//* * 손으로 풀어보기 * 1. 트리를 DFS로 재귀적으로 탐색하면서 각 정점에 대한 서브트리 수를 구하도록 함 * 2. 쿼리에 따라 서브트리에 속한 정점의 수를 출력 *//* * 15681) 트리와_쿼리 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N, R, Q; static ArrayList[] tree; // tree(트리 정보) static int[] qu..
✔ 문자열 지옥에 빠진 호석[백준 20166]코드 구현하기/* * 문제 분석하기 * : 상하좌우, 대각선으로 탐색하며 문자열을 만들 수 있는지 확인하도록 함 *//* * 손으로 풀어보기 * 1. 상하좌우, 대각선으로 탐색하며 문자열을 탐색하고 개수를 증가시키도록 함 * 2. 문자열이 만들어지는 경우의 수를 순서대로 출력 *//* * 20166) 문자열_지옥에_빠진_호석 */public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N, M, K; static char[][] board; // board(알파벳을 담은 격자 정보) static..