자바 73

백준(BOJ) 1697 : 숨바꼭질 (실버1) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/16973줄 요약현재 위치에서 가능한 모든 이동 경우(앞으로, 뒤로, 두 배)들을 큐에 넣어 BFS를 통해 탐색합니다.탐색 중에 동생의 위치(K)에 도달하면 걸린 시간을 출력하고 종료합니다.이미 방문한 위치는 다시 방문하지 않도록 체크하여 무한 루프를 방지합니다.코드// package boj1697;import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception { // System.setIn(new FileInputStream("src/input.txt")); BufferedRe..

Problem_Solving 2024.05.21

백준(BOJ) 2644 : 촌수계산 (실버2) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/26443줄 요약주어진 사람들의 관계를 인접 행렬로 구성하고, 촌수를 계산할 두 사람을 입력받습니다.DFS(재귀 및 스택)와 BFS(큐)를 사용하여 두 사람 사이의 최소 촌수를 탐색합니다.탐색 결과를 출력하여 두 사람 사이의 촌수를 반환하거나, 연결되지 않은 경우 -1을 반환합니다.코드// package boj2644;import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception { // System.setIn(new FileInputStream("src/input.txt")); ..

Problem_Solving 2024.05.19

백준(BOJ) 2606 : 바이러스 (실버3) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/26063줄 요약주어진 컴퓨터와 연결 정보를 바탕으로 인접 행렬을 구성합니다.DFS(깊이 우선 탐색) 또는 BFS(너비 우선 탐색)를 이용하여 1번 컴퓨터와 연결된 모든 컴퓨터를 탐색합니다.1번 컴퓨터를 제외한 연결된 컴퓨터의 수를 출력합니다.코드// package boj2606;import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception { // System.setIn(new FileInputStream("src/input.txt")); BufferedReader br = n..

Problem_Solving 2024.05.18

백준(BOJ) 1260 : DFS와 BFS (실버2) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/12603줄 요약주어진 그래프를 인접 행렬로 표현하고, DFS와 BFS를 통해 시작 정점에서부터 모든 연결된 정점을 탐색합니다.DFS는 재귀와 스택을 이용한 두 가지 방법으로 구현하여 각 정점을 방문하며, BFS는 큐를 이용하여 구현합니다.방문 여부를 확인하는 배열을 사용하여 각 정점의 방문 상태를 추적하고, 탐색 결과를 출력합니다.코드// package boj1260;import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception { // System.setIn(new FileInputStr..

Problem_Solving 2024.05.18

백준(BOJ) 14235 : 크리스마스 선물 (실버3) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/142353줄 요약내림차순 정렬된 우선순위 큐를 사용해 선물의 가치를 관리합니다.선물 요청 시 큐에서 가장 큰 선물을 꺼내 출력하고, 충전된 선물은 큐에 추가합니다.큐가 비어 있을 때 선물 요청이 들어오면 -1을 출력합니다.코드// package boj14235;import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception { // 입력을 파일에서 받기 위한 설정 // System.setIn(new FileInputStream("src/input.txt")); Buf..

Problem_Solving 2024.05.16

백준(BOJ) 1417 : 국회의원 선거 (실버5) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/14173줄 요약후보자들의 득표수를 내림차순으로 정렬하는 우선순위 큐에 저장하고, 현재 후보자의 득표수를 따로 저장합니다.현재 후보자의 득표수가 가장 많은 득표를 한 후보의 득표수를 넘을 때까지 반복하며, 가장 많은 득표를 한 후보의 득표수를 줄이고 현재 후보자의 득표수를 증가시킵니다.득표수를 조작하는 데 필요한 매수 횟수를 계산하여 출력합니다.코드// package boj1417;import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception { // 입력을 파일에서 받기 위한 설정 (주석 ..

Problem_Solving 2024.05.16

백준(BOJ) 13335 : 트럭 (실버1) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/133353줄 요약트럭 무게를 저장할 큐와 다리 상태를 나타낼 큐를 초기화하여, 다리 길이만큼 0으로 채워 트럭 이동을 준비합니다.각 반복마다 트럭이 다리를 한 칸씩 이동하며, 다리 위 트럭의 총 무게가 최대 하중을 넘지 않으면 새로운 트럭을 다리에 올려 이동을 시뮬레이션합니다.트럭이 모두 다리를 건너는 데 걸린 총 시간을 계산하여 출력합니다.코드// package boj13335;import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception { // 입력을 파일에서 받기 위한 설정 (주석 ..

Problem_Solving 2024.05.16

백준(BOJ) 11866 : 요세푸스 문제 0 (실버5) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/118663줄 요약입력받은 N과 K를 이용해 1부터 N까지의 숫자를 Queue에 추가하여 초기화합니다.Queue가 비어있지 않을 때까지 반복하면서, K-1번 회전하여 K번째 사람을 제거하고 출력합니다. 제거된 사람은 출력 형식에 맞춰 쉼표(,)로 구분하고, 마지막 사람은 닫는 괄호(>)로 마무리합니다.K번째가 아닌 경우에는 맨 앞의 사람을 Queue의 맨 뒤로 보내는 회전 작업을 수행합니다.최종적으로 요세푸스 순열을 구현하기 위해 Queue를 활용하여 사람들을 회전시키고, K번째 사람을 제거하는 과정을 반복하여 결과를 출력합니다.코드// package boj11866;import java.io.*;import java.util.*;public ..

Problem_Solving 2024.05.15

백준(BOJ) 1874 : 스택 수열 (실버2) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/18743줄 요약스택 사용 이유: 스택을 사용하여 목표 수열을 생성하고, 각 숫자를 스택에 넣고 빼는 과정에서 '+'와 '-'를 기록합니다.처리 과정: 목표 값에 도달할 때까지 스택에 숫자를 넣고(+), 목표 값과 일치하면 스택에서 숫자를 빼내며(-), 일치하지 않으면 "NO"를 출력합니다.효율성 향상: StringBuilder를 사용해 모든 연산을 기록하고, 한 번에 출력하여 출력 초과 문제를 방지합니다.코드// package boj1874;import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception..

Problem_Solving 2024.05.14

백준(BOJ) 10773 : 제로 (실버4) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/107733줄 요약스택 사용 이유: 스택은 LIFO(Last In, First Out) 특성으로, 가장 최근에 입력된 숫자를 관리하는 데 적합합니다. 0을 만나면 최근 입력값을 제거할 수 있습니다.속도 측면: 스택의 삽입과 삭제 연산은 O(1) 시간 복잡도를 가지므로, 전체 알고리즘의 시간 복잡도는 O(K)로, 입력 개수 K에 비례하여 효율적으로 처리할 수 있습니다.처리 과정: 입력된 숫자들을 스택에 저장하고 0을 만나면 스택에서 값을 제거하며, 최종적으로 스택에 남은 숫자들의 합을 구하여 출력합니다.코드// package boj10773;import java.io.*;import java.util.*;public class Main { ..

Problem_Solving 2024.05.14