코딩테스트/BOJ338 [BOJ] 10157 자리배정 - JAVA 1. 문제 https://www.acmicpc.net/problem/10157 10157번: 자리배정 첫 줄에는 공연장의 격자 크기를 나타내는 정수 C와 R이 하나의 공백을 사이에 두고 차례대로 주어진다. 두 값의 범위는 5 ≤ C, R ≤ 1,000이다. 그 다음 줄에는 어떤 관객의 대기번호 K가 주어진다. www.acmicpc.net C*R 공연장에 가장 왼쪽부터 시계방향으로 사람을 채운다. 좌표는 가장 왼쪽 아래가 (1,1)이다. K번째 관객의 x, y좌표를 출력한다. 만약 좌석을 배정할 수 없는 경우는 0을 출력한다. 2. 풀이 배정할 수 없는 경우(K>C*R)부터 제외한다. 시작인덱스는 (0,R-1)이다. 위->오른쪽->아래->왼쪽으로 움직인다. 다음 x,y를 구하고 범위에 벗어나거나 이미 저장.. 코딩테스트/BOJ 2022. 2. 12. [BOJ] 2477 참외밭 - JAVA 1. 문제 https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net ┓┏, ┗, ┛ 모양 육각형 밭의 넓이를 출력한다. 각 변의 길이는 시계 방향으로 변의 방향과 함께 주어진다. 변의 방향에서 동쪽은 1, 서쪽은 2, 남쪽은 3, 북쪽은 4로 나타낸다. 2. 풀이 어떤 방향에서 시작하든지 두 번 등장하는 변이 밭에서 들어간 부분이다. ABAB 식으로 반복됐을 때, 들어간 부분의 넓이는 안쪽 B*A를 곱하면 구할 수 있다. 전체 밭의 넓이는 A와 B가 .. 코딩테스트/BOJ 2022. 2. 12. [BOJ] 2491 수열 - JAVA 1. 문제 https://www.acmicpc.net/problem/2491 2491번: 수열 0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾 www.acmicpc.net 가장 긴 증가하는 부분수열, 가장 긴 감소하는 부분수열 중 더 긴 수열의 길이를 출력한다. 2. 풀이 "카운트"만 세면 되기 때문에 하나씩 입력받아가면서 조건에 해당되면 +1, 아니라면 1을 저장한다. 증가하는 수열, 감소하는 수열 모두 cnt를 체크하면 그 두 값과 현재 저장된 max값을 비교해서 더 큰 값을 다시 담는다. 마지막으로 꼭! 이전 숫자를 현재 숫자로 교체한다. import .. 코딩테스트/BOJ 2022. 2. 12. [BOJ] 17406 배열돌리기 4 - JAVA 1. 문제 https://www.acmicpc.net/problem/17406 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 www.acmicpc.net 2. 풀이 static 변수들 static int[][] deltas = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};//오른쪽, 아래, 왼쪽, 위 static int N, M, K;// 배열 크기, 회전 개수 static int[][] A;//배열 static int MIN = Integer.MAX_VALUE;//배열의 최소값 저장 st.. 코딩테스트/BOJ 2022. 2. 12. [BOJ] 16935 배열돌리기 3 - JAVA 1. 문제 https://www.acmicpc.net/problem/16935 16935번: 배열 돌리기 3 크기가 N×M인 배열이 있을 때, 배열에 연산을 R번 적용하려고 한다. 연산은 총 6가지가 있다. 1번 연산은 배열을 상하 반전시키는 연산이다. 1 6 2 9 8 4 → 4 2 9 3 1 8 7 2 6 9 8 2 → 9 2 3 6 1 5 1 8 3 4 2 9 → www.acmicpc.net 배열의 크기는 N*M이다. 주어진 R개의 연산을 순서대로 적용시킨 후 결과를 출력해야한다. 1번 연산 : 상하반전 2번 연산 : 좌우반전 3번 연산 : 오른쪽 90도 회전 4번 연산 : 왼쪽 90도 회전 5번 연산 : 4개의 부분배열로 나눠 그룹의 순서를 시계방향으로 이동 6번 연산 : 4개의 부분배열로 나눠 .. 코딩테스트/BOJ 2022. 2. 12. [BOJ] 16926 배열돌리기1 - JAVA 1. 문제 https://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 크기 N*M배열을 반시계 방향으로 R번 회전시킨 결과를 출력한다. 2. 풀이 N*M 배열을 R번 회전시킨다. 한 번 회전시킬 때마다 가장 바깥쪽에서부터 안쪽까지 한 줄 한 줄 돌린다. 따라서 한 번의 회전 당 turnArr(회전메서드)를 부르는 횟수는 더 작은 변의 절반만큼이다. 어떤 사각형이.. 코딩테스트/BOJ 2022. 2. 12. [BOJ] 2563 색종이 - JAVA 1. 문제 https://www.acmicpc.net/problem/2563 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net 100*100 도화지에 10*10 색종이를 붙인다. 색종이가 붙은 면적을 계산한다. (겹친 면적은 한 번만 계산돼야 함) 2. 풀이 처음에는 색종이의 개수*100 - 겹친 면적 코딩테스트/BOJ 2022. 2. 11. [BOJ] 2564 경비원 - JAVA 1. 문제 https://www.acmicpc.net/problem/2564 2564번: 경비원 첫째 줄에 블록의 가로의 길이와 세로의 길이가 차례로 주어진다. 둘째 줄에 상점의 개수가 주어진다. 블록의 가로의 길이와 세로의 길이, 상점의 개수는 모두 100이하의 자연수이다. 이어 한 줄 www.acmicpc.net 1. 어떤 경계에 있는지, 경계의 어느 위치에 있는지를 입력 받음 2. 북쪽, 남쪽은 왼쪽에서부터, 동쪽, 서쪽은 위에서부터 떨어진 거리를 입력 받음(문제 풀 때 중요) 3. 마지막에 주어지는 동근이의 위치와 나머지 상점들 간의 최단거리를 구해야 함 2. 풀이 북쪽 맨 왼쪽을 0으로 삼고 그 나머지를 거기에 맞춰 다시 좌표를 만들면 되는 문제였다. 북쪽 0,0을 기준으로 직선으로 만드는 법 .. 코딩테스트/BOJ 2022. 2. 11. [BOJ] 2578 빙고 - JAVA 1. 문제 https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 1. 5*5 빙고판 2. 모두 자연수, 1~25까지 적혀있음 3. 빙고는 가로, 세로, 대각선 두개 가능. 세 개 이상이면 끝 4. 끝날 때 사회자가 몇 번째 수를 불렀는지 출력 2. 풀이 생각한 방식은 다음과 같다. 1. 빙고판 이차원 배열에 저장 2. 사회자가 숫자를 부를 때마다 빙고 지우는 함수 호출 3. 빙고판에서 숫자를 찾아 그 자리를 0으로 바꿈 4. 바꾼 자리(x,y)를 기준으로 새로 빙.. 코딩테스트/BOJ 2022. 2. 11. [BOJ] 3053 택시기하학 - JAVA 1. 문제 https://www.acmicpc.net/problem/3053 3053번: 택시 기하학 첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다. www.acmicpc.net 2. 풀이 원=한 점에서부터 같은 길이를 가진 점들의 집합 따라서 택시 기하학에서의 원은 이런 모양을 가지게 된다. 정리하면, 택시기하학에서 원 넓이는 2*R*R이다. import java.util.Scanner; public class BOJ_3053_택시기하학 { public static void main(String[] args) { int R = new Scanner(System.in).nextInt(.. 코딩테스트/BOJ 2022. 2. 10. [BOJ] 2605 줄세우기 - JAVA 1. 문제 https://www.acmicpc.net/problem/2605 2605번: 줄 세우기 점심시간이 되면 반 학생 모두가 한 줄로 줄을 서서 급식을 탄다. 그런데 매일 같이 앞자리에 앉은 학생들이 앞에 줄을 서 먼저 점심을 먹고, 뒷자리에 앉은 학생들은 뒤에 줄을 서 늦게 점심을 www.acmicpc.net 2. 풀이 다른 방식으로 풀어보려다 그냥 문제가 하라는 대로 따라가보니 쉽게 풀렸다. (내 원래 순서-받은 카드 숫자)를 인덱스로 놓고 LinkedList에 add했다. 값은 내 원래순서+1이다. (문제가 1부터임) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impor.. 코딩테스트/BOJ 2022. 2. 9. [BOJ] 2309 일곱난쟁이 - JAVA 1. 문제 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 2. 풀이 답 여부를 반환하는 함수를 만들어 재귀호출을 했다. 7번째 반복이고 합계가 100이라면 true, 그 나머지는 false를 리턴했다. 나중에 한꺼번에 출력하기 위해 find[] 배열을 사용했다. 현재 idx부터 총 난쟁이의 인원수(9)까지 반복하고, 현재 idx를 포함해도 나머지에서 답을 찾을 수 있는지 확인한다. 그 중에 답이 있다면 true를 리턴하고 함수를 끝낸다. import .. 코딩테스트/BOJ 2022. 2. 9. 이전 1 ··· 24 25 26 27 28 29 다음