자료구조 12

백준(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

백준(BOJ) 4949 : 균형잡힌 세상 (실버4) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/49493줄 요약스택 사용 이유: 스택은 괄호의 중첩 구조를 관리하기에 적합한 자료구조로, 여는 괄호를 스택에 쌓고 닫는 괄호는 스택에서 제거하여 짝을 맞춥니다.속도 측면: 스택을 사용하면 각 연산(삽입 및 삭제)이 O(1) 시간에 이루어지므로 전체 알고리즘의 시간 복잡도는 O(n)입니다. 이는 괄호 문자열의 길이에 비례하여 효율적으로 처리할 수 있음을 의미합니다.처리 과정: 모든 괄호 문자열을 순회하며 스택을 이용해 짝을 맞추고, 닫는 괄호를 처리할 때 스택이 비어있으면 "no"를 출력하며, 모든 처리가 끝난 후에도 스택이 비어있지 않으면 "no"를 출력합니다. 모든 테스트 케이스에 대해 유효성을 검사하여 "yes" 또는 "no"를 출력합니다..

Problem_Solving 2024.05.14

백준(BOJ) 9012 : 괄호 (실버4) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/90123줄 요약스택 사용 이유: 스택은 괄호의 중첩 구조를 관리하기에 적합한 자료구조로, 여는 괄호를 스택에 쌓고 닫는 괄호는 스택에서 제거하여 짝을 맞춥니다. 이렇게 하면 괄호의 순서를 쉽게 관리할 수 있습니다.속도 측면: 스택을 사용하면 각 연산(삽입 및 삭제)이 O(1) 시간에 이루어지므로 전체 알고리즘의 시간 복잡도는 O(n)입니다. 이는 괄호 문자열의 길이에 비례하여 효율적으로 처리할 수 있음을 의미합니다.유효성 검사: 모든 괄호 문자열을 순회하며 스택을 이용해 짝을 맞추고, 닫는 괄호를 처리할 때 스택이 비어있으면 "NO"를 출력하며, 모든 처리가 끝난 후에도 스택이 비어있지 않으면 "NO"를 출력합니다. 모든 테스트 케이스에 대해..

Problem_Solving 2024.05.14

백준(BOJ) 7785 : 회사에 있는 사람 (실버5) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/77853줄 요약출입 기록의 수 n을 입력받고, n개의 줄에 걸쳐 출입 기록을 읽어와서 "enter"인 경우 HashSet에 이름을 추가하고, "leave"인 경우 HashSet에서 이름을 제거합니다.HashSet에 저장된 현재 회사에 있는 사람들의 이름을 배열로 변환하고, 배열을 내림차순으로 정렬합니다.정렬된 배열의 이름을 한 줄에 한 명씩 출력하여 현재 회사에 있는 사람들의 이름을 사전의 역순으로 출력합니다.코드// package boj7785;import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Excepti..

Problem_Solving 2024.05.01

백준(BOJ) 17219 : 비밀번호 찾기 (실버4) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/172193줄 요약저장된 사이트 주소의 수 N과 비밀번호를 찾으려는 사이트 주소의 수 M을 입력받고, N개의 줄에 걸쳐 사이트 주소와 비밀번호를 입력받아 HashMap에 저장합니다.M개의 줄에 걸쳐 비밀번호를 찾으려는 사이트 주소를 입력받습니다.입력받은 사이트 주소를 이용하여 HashMap에서 해당 사이트 주소의 비밀번호를 찾아 출력합니다.코드// package boj17219;import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception { // 입력 // 입력 파일로부터 데이터를 ..

Problem_Solving 2024.05.01