본문 바로가기

Preparing Coding Test114

[Java/정올/탐욕법(그리디, Greedy)] 1828번: 냉장고 문제 www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1101&sca=99&sfl=wr_hit&stx=1828 JUNGOL www.jungol.co.kr 문제 이해에 시간이 많이 걸렸다. 처음엔 그리디인 걸 알아도 안겹치게 하는 줄 알고 어리버리 했었다... 냉장고의 최소 개수이기 때문에, 처음 잡은 화학물질의 최고 온도보다 다음 화학물질의 최저 온도가 낮은 경우(겹치는 경우) 냉장고를 함께 써도 된다. 아니라면 새로운 냉장고를 추가해준다. 코드 Comparable을 구현하는 김에 PriorityQueue를 이용했는데, 다른 사람들 코드를 보니까 그냥 int[][] 배열을 써도 될 것 같다. package jungol; import java.io.*; impo.. 2021. 2. 16.
[Java/백준/소수] 1978번: 소수 찾기 문제 www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 전에 정리해뒀던 dev2som.tistory.com/27 [Java] 소수 찾기 문제 https://programmers.co.kr/learn/courses/30/lessons/12921 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자.. dev2som.tistory.com 의 에라토스테네스 체 방법을 참고했다. 설명은 주석으로! package boj; import ja.. 2021. 2. 15.
[Java/백준/배열] 16926번: 배열 돌리기 1, 17406번: 배열 돌리기 4 문제 www.acmicpc.net/problem/16926 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 새로운 유형을 만나버렸다. 앞으로 많이 쓰일 것 같아서 고민하다 다른사람들의 풀이를 보고 방법을 아예 외워버렸다. 배열 전체를 반시계 방향으로 입력된 횟수만큼 돌려주면 된다. 여기서 고민할 것은 몇 겹의 layer로 이루어져 있는지, 어떻게 돌려줄 것인지 이다. 1. Layer 수 예를 들어 4 x 5 배열에선,.. 2021. 2. 14.
[Java/백준/스택(Stack)] 2493번: 탑 문제 www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 문제 이해에만 엄청 오래 걸렸다.. 힌트를 봐도 당최 어떻게 푸는질 알아야지ㅠ 코드 자체는 단순하다. 탑이 나열되어 있을 때 가장 오른쪽에서 바라보면, 높은 건물들만 보인다. 탑 높이를 입력 받는다. → tall (1-1) stack 확인, 비어있지 않다면 stack의 top의 높이를 확인한다. → tall보다 높다면 높은 탑의 위치를 출력하고 반복문을 빠져나온다. (1-2) stack 확인, 비어있지 .. 2021. 2. 14.
[Java/백준/재귀, 분할정복] 2630번: 색종이 만들기 문제 www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net color 변수에 시작점의 색을 저장한다. 지정 범위에서 color와 다른 색이 나오면, 해당 범위는 모두 같은 색으로 칠해져 있다는 것이 아니므로, 범위를 4개로 나누어서 재귀 함수를 호출한다. 기저조건은 start와 end의 범위가 1이 될 때로 했다. package boj; import java.io.*; public class BOJ2630 { static int blue.. 2021. 2. 14.
[Java/백준/스택(Stack)] 1918번: 후위 표기식, 1935번: 후위 표기식2 문제 www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식 www.acmicpc.net www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 후위 표기식: 골드 4, 후위 표기식2: 실버 3 문제이다. 푸는 방식은 비슷해서, 후위 .. 2021. 2. 14.
[Java/백준/Queue(큐)] 1158번: 요세푸스 문제, 11866번: 요세푸스 문제 0 문제 www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 두 문제는 범위만 다른 동일한 문제이다. 위 문제는 자료구조 중 Queue를 사용하면 쉽게 풀 수 있다. 큐(Queue)는 먼저 들어온 데이터가 먼저 나가는 FIFO(선입선출) 구조를 띄고 있다. 예제의 7 3을 예로 들면 처음엔 에서 1을 빼서 7 뒤로 넣고, 2를 빼서 7 뒤의 1 뒤.. 2021. 2. 14.
[Java(자바)/백준/문자열] 1316번: 그룹 단어 체커 문제 www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램.. 2020. 12. 22.
[Java(자바)/백준/문자열] 2941번: 크로아티아 알파벳 문제 www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져.. 2020. 12. 21.