BOJ333 [BOJ] 1074 Z - JAVA 1. 문제 https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 2. 풀이 재귀함수를 이용한다. 0. n==0이라면 2의 0제곱, 즉 1이므로 함수를 종료한다. 1. r,c가 둘 다 절반보다 크다면 점이 4구역에 있는 경우이므로 나머지 세 면적을 더하고 4구역을 호출한다. 2. r만 절반보다 크다면 3구역에 있는 경우이므로 나머지 두 면적을 더하고 3구역을 호출한다. 3. c만 절반보다 크다면 2구역에 있는 경우이므로 나머지 한 면적을 더하.. 코딩테스트/BOJ 2022. 2. 16. [BOJ] 10709 기상캐스터 - JAVA 1. 문제 https://www.acmicpc.net/problem/10709 10709번: 기상캐스터 출력은 H 행으로, 각 행에는 공백으로 구분된 W 개의 정수를 출력한다. 출력의 i 번째 행 j 번째 정수 (1 ≦ i ≦ H, 1 ≦ j ≦ W) 는, 지금부터 몇 분후에 처음으로 구역 (i, j) 에 구름이 뜨는지를 표시 www.acmicpc.net 2. 풀이 한줄한줄 입력받을 때마다 cloud를 -1로 초기화했다. 중간에 구름을 만난다면 그 구름 인덱스를 cloud에 저장한다. 구름이 아닌데 cloud가 아직 -1이라면 -1을 출력한다. 구름이 아니고 cloud가 -1이 아니라면 현재 인덱스-cloud를 출력한다. import java.io.BufferedReader; import java.io... 코딩테스트/BOJ 2022. 2. 16. [BOJ] 2527 직사각형 - JAVA 1. 문제 https://www.acmicpc.net/problem/2527 2527번: 직사각형 4개의 줄로 이루어져 있다. 각 줄에는 8개의 정수가 하나의 공백을 두고 나타나는데, 첫 4개의 정수는 첫 번째 직사각형을, 나머지 4개의 정수는 두 번째 직사각형을 각각 나타낸다. 단 입력 직사 www.acmicpc.net 2. 풀이 겹치지않음->점->선분->겹침 순으로 파악하면 된다. import java.io.*; import java.util.*; public class BOJ_2527_직사각형 { private static int[] points; public static void main(String[] args) throws IOException { BufferedReader in = new B.. 코딩테스트/BOJ 2022. 2. 16. [BOJ] 2559 수열 - JAVA 1. 문제 https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net N개의 수열 중 K만큼 연속적인 합을 구한 뒤, 그 중 가장 큰 합을 출력한다. 2. 풀이 1. sum, MAX 변수를 만들고 숫자를 받아가면서 sum과 queue에 더한다. 2. queue의 사이즈가 5가 되었다면 최대값을 다시 비교하고, 다음 값 비교를 위해 sum에서 큐의 가장 앞 원소(front)를 뺀다. 3. 최대값을 출력한다. import java.io.*; im.. 코딩테스트/BOJ 2022. 2. 14. [BOJ] 2304 창고 다각형 - JAVA 1. 문제 https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net 창고의 지붕을 다음과 같이 만든다. 지붕은 수평 부분과 수직 부분으로 구성되며, 모두 연결되어야 한다. 지붕의 수평 부분은 반드시 어떤 기둥의 윗면과 닿아야 한다. 지붕의 수직 부분은 반드시 어떤 기둥의 옆면과 닿아야 한다. 지붕의 가장자리는 땅에 닿아야 한다. 비가 올 때 물이 고이지 않도록 지붕의 어떤 부분도 오목하게 들어간 부분이 없어야 한다. 2. 풀이 먼저 x축.. 코딩테스트/BOJ 2022. 2. 14. [BOJ] 1244 스위치 켜고 끄기 - JAVA 1. 문제 https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 스위치가 꺼져있으면 0, 켜져있으면 1이다. 남자는 1, 여자는 2다. 학생들은 1이상 스위치 개수 이하의 자연수를 받는다. 남학생은 본인 번호의 배수 스위치를 바꾼다. 여학생은 본인 번호 기준으로 양 옆이 대칭이 아니게 될 때까지 넓혀가면서 바꾼다. 2. 풀이 스위치 배열은 좀 더 편하게 코딩하기 위해 boolean으로 설정했다. 남학생=> 본인번호-1을 시작으로 배수마다 상태를.. 코딩테스트/BOJ 2022. 2. 13. [BOJ] 2628 종이자르기 - JAVA 1. 문제 https://www.acmicpc.net/problem/2628 2628번: 종이자르기 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1㎝마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선 www.acmicpc.net 종이를 칼로 자른다. 가로, 세로 방향으로 끝에서 끝까지만 자를 수 있다. 2. 풀이 자르는 점선을 모두 입력받고 정렬시켰다. 현재 점선-직전 점선으로 gap을 구해서 하나하나 max값과 비교했다. 맨 끝과의 차이도 알아야 해서 점선 배열에 가로의 끝 값, 세로의 끝 값도 넣어줘야 했다. 하지만 이럴 필요 없이 그냥 가로의 가장 큰 gap, 세로의 가장 큰 gap을 각각 찾아서 서로 곱해주면 된다.. 코딩테스트/BOJ 2022. 2. 13. [BOJ] 2635 수 이어가기 - JAVA 1. 문제 https://www.acmicpc.net/problem/2635 2635번: 수 이어가기 첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다. www.acmicpc.net 첫번째 수로 양의 정수가 주어진다. 두번째 수는 임의로 정한다. 세번째 수부터 모든 수는 2번째 전 수-1번째 전 수를 뺀 값이다. 음의 정수가 만들어지면 이 음의 정수를 버리고 더 이상 수를 만들지 않는다. * 문제에서 얘기하는 양의 정수는 0을 포함한다. 2. 풀이 첫번째 수는 항상 N, 두번째 수는 0부터 N까지 가능하다. first, second 수를 변경해가면서 카운트를 센다. 만약 first-second= 0; num--) { first = N; second = num; int cnt .. 코딩테스트/BOJ 2022. 2. 12. [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] 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. 이전 1 ··· 23 24 25 26 27 28 다음