일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 플러터
- php 프로그래밍 입문 예제
- php 프로그래밍
- 자바 스프링
- 페이코 추천인코드
- 최단 경로
- 백준
- 파이썬
- 플러터 개발환경 설정
- 페이코 추천인
- 페이코 친구코드
- C
- 페이코 초대코드
- 자바
- php 프로그래밍 입문
- php 프로그래밍 입문 문제풀이
- programmers
- php
- SWEA
- 한정 분기
- JAVA SPRING
- 스프링
- Java
- 배열
- php 프로그래밍 입문 3판
- C언어
- php 프로그래밍 입문 솔루션
- spring
- Flutter
- php 프로그래밍 입문 연습문제
- Today
- Total
목록알고리즘/BOJ - Java (97)
ImJay
[BOJ/Java] 1992. 쿼드트리 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 문제 해석 이 문제는 2차원 배열에 저장된 흑백 이미지를 쿼드트리 방식으로 압축하는 문제다. 쿼드트리는 2차원 공간을 4분할하여, 각 구역이 모두 같은 값으로 이루어져 있다면 해당 값을 사용하고, 그렇지 않다면 더 작은 구역으로 나누어 재귀적으로 분석하는 압축 방식이다. 각 구역이 전부 0 또는 1인 경우에는 해당 숫자를 출력하고, 섞여 있는 경우에는 괄호로 묶어 각 사분면의 결과를 표시한다. 풀이 과정 제출된..
[BOJ/Java] 3109. 빵집 3109번: 빵집 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 www.acmicpc.net 문제 해석 이 문제에서는 빵집을 기점으로 여러 파이프라인을 연결하여 최대한 많은 가정에 도달하는 것이 목표다. 파이프라인은 상단, 중앙, 하단 방향으로 연결할 수 있으며, 연결 과정에서 장애물을 피해야 한다. 이 문제는 가능한 많은 파이프라인을 설치하는 최적의 방법을 찾는 것을 요구한다. 풀이 과정 제출된 Java 코드는 깊이 우선 탐색(DFS)를 활용하여 각 가능한 경로를 탐색하고, 파이프라인을 설치한다. 이 탐색은 모든 가능한 경로를 고려..
[BOJ/Java] 16435. 스네이크버드 16435번: 스네이크버드 첫 번째 줄에 과일의 개수 N (1 ≤ N ≤ 1,000) 과 스네이크버드의 초기 길이 정수 L (1 ≤ L ≤ 10,000) 이 주어집니다. 두 번째 줄에는 정수 h1, h2, ..., hN (1 ≤ hi ≤ 10,000) 이 주어집니다. www.acmicpc.net 문제 해석 이 문제에서는 스네이크버드와 여러 개의 과일이 주어지며, 스네이크버드의 길이를 최대로 늘리는 것이 목표이다. 스네이크버드는 자신의 길이 이하 높이의 과일을 먹을 수 있으며, 과일을 먹을 때마다 길이가 1 증가한다. 과일의 위치(높이)는 무작위로 주어진다. 풀이 과정 io 메소드에서 입력을 받아 과일의 높이를 우선순위 큐에 저장한다. 이를 통해 가장 낮은 과일..
[BOJ/Java] 3040. 백설 공주와 일곱 난쟁이 3040번: 백설 공주와 일곱 난쟁이 매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다. www.acmicpc.net 문제 해석 이 문제는 9명의 난쟁이 중 진짜 일곱 난쟁이를 찾아내는 문제로, 진짜 일곱 난쟁이의 모자에 쓰여 있는 숫자의 합이 정확히 100이 되어야 한다. 우리는 9명 중에서 7명을 선택해 그 합이 100이 되는 조합을 찾아내야 한다. 풀이 과정 제출된 Java 코드는 조합을 사용하여 문제를 해결한다. 9명의 난쟁이 중 7명을 선택하는 모든 조합을 생성하고, 선택된 난쟁이들의 숫자 합이 100이 ..
[BOJ/Java] 17406. 배열 돌리기 4 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 www.acmicpc.net 문제 해석 N x M 크기의 배열에서 특정 연산을 K번 수행할 수 있다. 연산은 배열의 부분을 회전시키는 것이며, 목표는 모든 연산을 수행한 후 배열의 각 행의 합 중 최소값을 찾는 것이다. 풀이 과정 io 메소드는 입력을 받아 초기 배열 상태와 회전 연산을 저장한다. sol 메소드에서는 주어진 회전 연산의 모든 순열을 생성하고(permutation 메소드), 각 순열에 대해 배열을 회..
[BOJ/Java] 1931. 회의실 배정 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제 해석 이 문제는 회의실 한 개를 사용할 때 주어진 회의 목록 중에서 최대한 많은 회의를 배정하는 문제이다. 각 회의는 시작 시간과 종료 시간이 주어지며, 회의는 종료 시간과 동시에 다른 회의가 시작될 수 있다. 주어진 회의를 최적으로 배정해야 하며, 회의의 최대 개수를 반환해야 한다. 풀이 과정 제출된 Java 코드는 우선순위 큐(PriorityQueue)를 사용하여 회의를 종료 시간에 따라 정렬하고, 회의가 동일한 종료 시간을 가지면 시작 시간에 따라 정렬한다. 이러한 정렬은 각 회의를 최대한 겹치지 않게 배정하기 위해 사용된다..
[BOJ/Java] 2580. 스도쿠 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 문제 해석 이 문제는 9x9 크기의 스도쿠 판에서 빈 칸을 채우는 방법에 대해 다룬다. 각 행, 열, 그리고 3x3 크기의 박스 안에 1부터 9까지의 숫자가 중복 없이 등장해야 한다. 주어진 스도쿠 판에는 일부 숫자가 이미 채워져 있으며, 이를 바탕으로 빈 칸을 올바르게 채워야 한다. 풀이 과정 제출된 Java 코드는 빈 칸의 위치를 추적하고, 가능한 모든 숫자를 시도하여 문제를 해결하는 백트래킹 방식을 사용한다. 여기서 P..
[BOJ/Java] 14502. 연구소 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 문제 해석 연구소의 지도가 주어지며, 연구소는 빈 칸, 벽, 바이러스로 구성되어 있다. 벽을 세 개 더 설치하여 바이러스의 확산을 최소화하고, 이때 안전 영역(바이러스가 퍼지지 않은 빈 칸)의 최대 크기를 구하는 것이 문제의 목표이다. 바이러스는 상하좌우로 인접한 빈 칸으로 퍼져 나간다. 풀이 과정 io 메소드에서 입력을 받아 연구소의 초기 상태를 구성한다. 바이러스 위치는 리스트에 저장한다. sol 메소드에서는 벽을 세울 수 있는 모든..
[BOJ/Java] 2146. 다리 만들기 2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net 문제 해석 이 문제에서는 N x N 크기의 지도 위에 여러 섬이 표시되어 있으며, 각 섬은 1로, 바다는 0으로 표시된다. 목표는 서로 다른 두 섬을 연결하는 가장 짧은 다리를 찾는 것이다. 다리는 수평 또는 수직으로만 연결할 수 있으며, 다리의 길이는 바다를 지나는 칸의 수로 결정된다. 풀이 과정 sol 메소드는 섬의 경계를 설정하고(setBoundary), 섬들 사이의 최단 다리 거리를 찾는(findWay) 두 가지 주요..
[BOJ/Java] 4963. 섬의 개수 문제 해석 이 문제는 2차원 맵에서 연결된 땅의 덩어리(섬)의 개수를 찾는 문제이다. 맵은 0(바다)과 1(땅)로 구성되어 있으며, 8방향(수직, 수평, 대각선)으로 연결된 땅은 하나의 섬으로 간주된다. 입력의 끝은 너비와 높이가 모두 0인 경우로 주어진다. 풀이 과정 io 함수는 여러 테스트 케이스를 처리하며 각 케이스에 대한 맵 정보를 입력받고, 각 위치에서 섬의 개수를 계산한다. sol 함수는 주어진 위치에서 BFS를 사용하여 섬을 탐색하고, 방문한 위치는 visited 배열을 통해 체크한다. 연결된 모든 땅을 방문하면 섬 하나의 탐색이 완료된다. checkStatus 함수는 주어진 위치가 맵 내부에 있고, 방문하지 않은 땅인지 확인한다. 코드 package..