본문 바로가기

전체 글133

[코딩테스트/백준 알고리즘] 1074번 - Z (Java, 자바 풀이) 문제 https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 문제 설명 문제 풀이 맵을 사등분해서 좌표가 4개의 구역 중 어디에 위치하는지 추적한다. 한 구역에 든 요소의 수는 2²ⁿ⁻²이기 때문에 i번째 구역으로 이동하게 된다면 i * 2²ⁿ⁻²만큼의 카운트를 더해줘야 한다. 이 과정을 맵의 크기가 2X2 사이즈가 될때까지 반복하여 실행한다. 코드 import java.util.*; class Main { public static void .. 2023. 1. 18.
[코딩테스트/백준 알고리즘] 1389번 - 케빈 베이컨의 6단계 법칙 문제 https://www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻 www.acmicpc.net 문제 설명 문제 풀이 BFS 알고리즘을 통해 해당 노드와 친구인 노드들을 큐에 추가하고 단계를 거칠 때마다 가중치를 하나씩 증가한다. 코드 import java.util.*; import java.io.*; class Main { static int minSum = Integer.MAX_VALUE; static int result = 5001;.. 2023. 1. 13.
[코딩테스트/백준 알고리즘] 1992번 - 쿼드트리 (Java, 자바 풀이) 문제 https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 문제 설명 문제 풀이 https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net 이 문제랑 풀이 방식이 비슷했다. 재.. 2023. 1. 6.
[코딩테스트/ 백준 알고리즘] 17626번 - Four Squares (Java, 자바 풀이) 문제 https://www.acmicpc.net/problem/17626 17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1 www.acmicpc.net 문제 설명 문제 풀이 i가 제곱 수가 아닐 때 i가 제곱수일 때 브루트포스 a₁의 값에 따라 결과가 달라지므로 a₁을 감소시키면서 값을 모두 구해본다. memo i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 memo[i] 1 2 3 1 2 3 4 2 1 2 3 3 2 3 3 1 2 2 코드 import java.util.. 2023. 1. 5.
[코딩테스트/백준 알고리즘] 7576번 - 토마토 (Java, 자바 풀이) 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제 설명 문제 풀이 너비 우선 탐색을 활용하면 해결할 수 있는 문제였다. 이 문제의 풀이에서는 해당 노드를 방문했을 때 몇 다리를 걸쳐서 왔는지 체크해야 했기 때문에 visit을 boolean이 아니라 int형으로 만들어서 값을 업데이트하여 확인했다. 코드 import java.util.*; import java.io.*; class Main { static Queue q .. 2022. 12. 30.
[코딩테스트/백준 알고리즘] 1931번 - 회의실 배정 (Java, 자바 풀이) 문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제 설명 문제 풀이 그리디 알고리즘 문제다. 회의 시간표를 회의 시간이 빨리 끝나는 순으로 정렬한다. 만약 끝나는 시간이 같다면 시작 시간 순으로 정렬한다. 회의 종료 시간을 기록하는 end의 초기 값을 0보다 작은 -1로 초기화한다. 정렬된 회의 시간표의 시작 시간을 end와 비교한다. 만약 회의 시작 시간이 end보다 크거나 같으면 count를 증가시키고 end값을 해당 회의의 종료 시각으로 변경한다. 끝까지 수행하여 답을 도출한다. 코드 import java.io.*; import java.util... 2022. 12. 29.