본문 바로가기

분류 전체보기

(83 개)
[JAVA] 백준 10828번: 스택 문제정수를 저장하는 스택을 구현하고, 주어지는 5가지 명령에 따라 연산을 수행하는 문제. 아이디어스택을 구현하기 위해 Java의 ArrayDeque를 이용한다.주어진 그대로 구현한다. 풀이import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); StringTokenizer st; Deque stack = n..
[JAVA] 백준 10816번: 숫자 카드 2 문제숫자 카드 N개가 입력되고 다음 M개의 정수가 주어질 때, 각 정수가 적혀있는 숫자 카드를 몇 개 가지고 있는지 출력하는 문제. 아이디어카운팅 정렬을 사용한다.주어지는 정수 범위에 해당하는 크기의 배열 선언(-10,000,000  ~ 10,000,000 이므로 20,000,001 사이즈의 배열)음수는 0 ~ 9,999,999 인덱스에 카운트,0은 10,000,000 인덱스에 카운트 ,양수는 10,000,001 ~ 20,000,000 인덱스에 카운트한다.해시맵을 사용해도 무관하다. 풀이import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception{ ..
[JAVA] 백준 10773번: 제로 문제입력되는 수를 차례로 저장하다가, 0이 입력되면 가장 마지막에 저장한 수를 제거하는 연산을 반복한다.이후 저장된 수들의 합을 구하는 문제. 아이디어0 입력시 가장 마지막으로 저장된 수를 제거하는 부분이 누가봐도 스택 부분이다.스택을 구현해서 문제 그대로의 연산을 구현한다. 풀이import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Deque stack = new ArrayDeque(); ..
[JAVA] 백준 9012번: 괄호 문제괄호 문자열이 주어질 때, 모든 여는 괄호에 대해 닫는 괄호가 올바르게 존재하는 VPS(Valid Parenthesis String) 인지 판별하는 문제. 아이디어[JAVA] 백준 4949번: 균형잡힌 세상 (tistory.com) 문제와 동일하게 풀이를 진행한다.스택을 이용해 여는 괄호를 저장하다가, 닫는 괄호를 만났을 때 여는 괄호가 스택 끝에 존재하는지 체크한다.존재하면 여는 괄호를 pop, 존재하지 않으면 순서가 엇갈린 경우이므로 올바르지 않은 문자열로 취급한다. 풀이import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception{ Buffe..
[JAVA] 백준 4949번: 균형잡힌 세상 문제소괄호 "("와 대괄호 "]"가 포함된 문자열이 계속해서 주어질 때, 각 문자열 안의 괄호들이 서로 짝을 이루어 완전한 문장을 이루는지 여부를 출력하는 문제. 아이디어괄호 체크 문제는 전형적인 스택 문제로, 스택을 이용해 풀이한다.여는 괄호 "(", "[" 가 등장하면 스택에 담고,닫는 괄호 ")", "]" 가 등장하면 스택의 마지막에 매칭되는 각각의 여는 괄호가 있는지 체크하고있으면 여는 괄호를 스택에서 pop, 없으면 완전하지 않은 문장으로 취급한다.여기서 중요한 점은 스택에 빈 상태에서 닫는 괄호로 시작하는 경우도 완전하지 않다는 사실이다. 풀이import java.io.*;import java.util.*;public class Main { public static void main(St..
[JAVA] 백준 2839번: 설탕 배달 문제총 설탕 N 킬로그램이 제공되고 3킬로그램, 5킬로그램 봉지 단위로 가져가야 할 때, 사용해야 하는 봉지 수의 최솟값을 구하는 문제. 아이디어3킬로그램 보다는 최대한 단위수가 큰 5킬로그램으로 많이 가져가는 것이 포인트인 그리디 문제.아래 과정을 반복한다.5로 N을 나눈다.나눈 나머지에서 3을 한 번 뺀다.이 두 과정을 N이 1보다 작거나 같을 때까지 반복한다.이렇게 되면 5킬로그램 단위로 최대한 많이 가져갈 수 있게되면서, 필요한 봉지수의 최솟값을 구할 수 있다. 풀이import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception{ Buffered..
[JAVA] 백준 2164번: 카드2 문제N이 주어지면 1부터 N까지의 카드를 순서대로 보유하고, 아래의 순서대로 연산을 반복한다.가장 첫번째 카드를 버린다.그 다음 첫번째 카드를 맨 뒤로 옮긴다.이 과정을 카드가 한 장 남을 때까지 반복한다.이렇게 연산을 수행한 후 제일 마지막에 남게 되는 카드를 출력하는 문제. 아이디어(첫 풀이) 맨 앞의 요소를 맨 뒤로 옮기는데 가장 간단하게 사용 할 수 있는 자료구조는 큐이다.큐를 이용해 해당 연산을 직접 구현한다.(두번째 풀이) 직접 연산을 수행하며 답을 나열하면 다음과 같다.1,2,2, 4,2, 4, 6, 8,2, 4, 6, 8, 10, 12, 14, 16,...규칙성을 찾으면 숫자가 2^i 개씩 증가하며, 각 수열이 생기는 것을 알 수 있다. 그리고 정답은 해당 수열에서의 수 위치 x 2이 규칙..
[JAVA] 백준 1920번: 수 찾기 문제N개의 정수 A[1], A[2], ... A[N]이 주어질 때, X라는 정수가 존재하는지 여부를 출력하는 문제. 아이디어카운팅 정렬 방식을 활용하려 했지만, 입력 범위가 -2^31 ~ 2^31 이길래 그냥 해시맵을 사용하기로 했다.입력되는 수 마다 해시맵에 저장하고, 맵의 getOrDefault를 활용해 찾는 값이 존재하면 1, 없으면 0을 출력하도록 한다.문제에서는 명확히 밝히지 않았지만, 중복된 정수가 입력될 수도 있기에 맵에 존재 할 경우 그냥 키에 해당하는 값에 +1 해주었다. 풀이import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws Exception{ ..