본문 바로가기

자바77

[백준] JAVA 자바 : 오큰수 (17298번) 백준으로 공부하면서 부딪힌 첫 난관… 아무리 진짜 그 어떤 방법을 써도 난 n제곱에서 시간을 줄일 방법이 기억이 안 나서… 다른 분 블로그를 참고했다. [알고리즘] 백준 17298 오큰수 Java 문제 정보플랫폼 : 백준분류 : Stack (스택)난이도 : 골드 4링크 : https://www.acmicpc.net/problem/9184시간제한 및 메모리 제한 검증O(n) 풀이자료형 : 최대 1백만, int풀이스택을 두개 사용한다. 한 개는 정답 velog.io 진짜 도대체 이 문제를 스택으로 어떻게 푸는 건가 했는데… 이런 방법이 있었다니… 어떻게 어떻게 문제를 풀긴 했는데 사실상 내가 푼 게 아니라 거의 베꼈다고 봐도 무방하다. 하 진짜 아직도 난 부족한가?? 진짜 절망스럽네 ㅋㅋㅋ 고작 골드에서 막.. 2024. 1. 20.
[백준] JAVA 자바 : 쇠막대기 (10799번) 여러 길이의 막대기를 여러 개 입력 받아 레이저로 잘랐을 때, 최종적으로 몇 개의 막대기가 생기는지 묻는 문제이다. 처음에 문제만 읽었을 땐 진짜 완전 어려워 보였는데… 막상 생각을 좀 하니 알고리즘이 슉슉 떠오르던 생각보다 쉬운 문제였다…! 어떻게 풀었냐??! 그건 아래의 코드에 주석을 다 달아놨으니 코드를 보십셔! import java.io.*; import java.util.Stack; import java.util.Queue; import java.util.LinkedList; public class IronStick_10799 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedR.. 2024. 1. 20.
[백준] JAVA 자바 : 단어 뒤집기 2 (17413번) 앞에서 만들었던 단어 뒤집기의 심화 버전이다. 사실 앞에서 만들었던 단어 뒤집기는 스택만 쓰면 공백만 잘 처리해주면 쉽게 구현할 수 있었다. 이번 경우는 을 사용하는 주석이 추가돼서 저 주석은 그대로 출력해줘야 한다. 그래서… 이번에는 큐를 사용해야 할 듯! import java.io.*; import java.util.Stack; import java.util.Queue; import java.util.LinkedList; public class ReverseWord2_17413 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Sys.. 2024. 1. 20.
[백준] JAVA 자바 : 덱 (10866번) 덱을 구현하는 문제이다. 사실 덱은 큐의 상위 호환 버전이라… 앞에서 구현했던 큐에서 앞뒤에서 모두 뺄 수 있게만 수정해주면 된다. 그래서 요소의 개수를 나타내는 변수 pot만 잘 이용한다면 큰 어려움 없이 구현할 수 있을 듯? import java.io.*; class Deque { static int[] list; static int n; static int pot = 0; // 덱에 담긴 요소의 개수 public Deque(int N) { this.n = N; this.list = new int[N]; } public void push_front(int e) { if (pot == n) { // 배열이 꽉 찼을 경우 늘려주는 과정 int[] tmp_list = new int[2*n]; for (in.. 2024. 1. 20.
[백준] JAVA 자바 : 요세푸스 문제 (1158번) 요세푸스 문제를 푸는 알고리즘을 만드는 문제이다. 처음에는 문제를 이해하는 게 되게 어려웠다. 아니 T가 3이면 계속 3번째 사람만 출력되는 거 아닌가?? 그런데 그런 게 아니라… 시작하는 사람은 제거되는 사람의 인덱스에서 시작하는 거였다. 그러니까 처음에는 3번째 사람이 빠지면, 그 다음 사람은 3+3인 6번째 사람이 빠지는 구조! 이 문제를 코딩하는 데에도 상당히 고민을 많이 했다. 큐를 2개를 써야 하나…? 그런데 큐를 2개를 쓰면 양쪽 큐에 요소가 T-1개 남은 시점부터는 원하는 방향으로 요소를 꺼낼 수가 없게 돼서… 그런데 굳이 큐를 2개를 사용하지 않고, 큐를 하나만 사용해도 쉽게 해결할 수 있었다… 큐의 앞 요소를 빼서 다른 큐에 넣는 게 아니라 큐 자기 자신의 맨 뒤에 갖다 넣으면 되는 거.. 2024. 1. 20.
[백준] JAVA 자바 : 큐 (10845번) 큐를 구현하는 문제이다. 사실 큐는 FIFO를 구현하면 되므로… 이미 한 번 스택을 구현해 본 경험만 잘 응용하면 쉽게 구현할 수 있다. 문제는 구현하는 방법이 아니라… 어떻게 시간을 줄이느냐임…ㅋㅋ 직전에 에디터를 코딩하면서 배운 BufferedReader이랑 BufferedWriter을 이용하니까 확실히 시간이 빨라진 듯?! 그러니까 이제 Scanner-StringBuilder 사용은 지양하고… BufferedReader-BufferedWriter을 애용하자! import java.io.*; class Queue { static int[] list; static int n; static int pot = 0; // 큐에 담긴 요소의 개수 public Queue(int N) { n = N; list =.. 2024. 1. 20.
반응형