본문 바로가기

자바5

[자바] 백준 28278번 스택 2 https://www.acmicpc.net/problem/28278 [문제 이해]덱,,,을 사용해서 쉽게 풀어보려고 했더니 또또 시간초과나고 난리남.. 흠 이유는 모르겠으나 intelliJ에서 돌리면 숫자 명령어에 대해서 출력이 바로 나오지 않는데 도대체 왜 맞은 건지 모르겠다며,, 무튼 문제 자체는 어렵지 않았으나 내일은 BufferedWriter를 진짜 마스터해야겠다고 느꼈다. 문제를 이해하지 못해서 못 푼 게 아니라 입출력에서 시간초과 뜨는 건 너무 하잖아~ [문제 풀이]1이 들어올 때만 약간 다른데 StringTokenizer 이용해서 한 줄에 들어오는 다음 숫자 가져다가 stack에 넣으면 되는 부분이라 크게 어려운 건 없었다. import java.io.*;import java.util.*;p.. 2024. 7. 3.
[자바] 백준 2346번 풍선 터뜨리기 https://www.acmicpc.net/problem/2346 [문제 이해]요세푸스랑 비슷해서 금방 풀 줄 알았는데 티어가 차이나는 이유가 있었구나,, 일단 인덱스 값을 저장해서 이를 출력해야되는 것이 가장 큰 차이점이었고, -(마이너스)값이 있기 때문에 값을 어떻게 배치해야하는가도 중요하게 생각해봐야할 부분 중 하나였다. [문제 풀이]값이 양수면 원래 값-1만큼 반복하면서 앞에서 원소를 빼고 뒤에 삽입하면 됐었고, 값이 음수면 원래 값만큼 반복하면서 뒤에서 앞으로 값을 삽입하면 되는 문제였다.처음에는 LinkedList로 선언해서 메모리 초과 파티를 겪은 이후, 이를 수정했더니 이번에는 NullPointer 오류가 났다. 간단한 예제 (123)으로 테스트 해보니 마지막 값일 경우, NullPoint.. 2024. 7. 2.
[자바] 백준 10866번 덱 https://www.acmicpc.net/problem/10866  [문제 이해]덱을 얼마나 잘 이해하고 있는가에 대한 문제였다.. -> 당연히 금방 풀 줄 알았는데 덱을 제대로 이해 못하고 있었나봄 ㅎㅎ;; [문제 풀이]단순히 equals로 문자 비교해서 관련된 내용 구현하면 된다고 생각하고 풀었는데... 시간 초과~..아무튼 해보니까 get 대신 peek을 쓰는 것이 값을 조회할 때 시간이 덜 걸리는 것 같고,, add보단 offer을 사용하는 것이 시간이 덜 걸리는 것 같다. 그리고 equals로 다 검사해도 괜찮긴 하지만 switch문을 사용해서 구현해보는 방식으로 문제를 풀어봤다.마지막으로 BufferedWriter 초기화하는 거 때문에도 계속 틀렸었는데 flush랑 close는 for문 밖에.. 2024. 7. 2.
[자바] 백준 1158번 요세푸스 문제 https://www.acmicpc.net/problem/1158 [문제 이해]원을 이루어서 사람들이 서있으면 한 명씩 제거해가는 문제였는데 여기서 제일 큰 문제는 "deque에서 어떻게 순회하도록 만드는가" 였다.N과 K가 주어졌을 때, N명의 사람 중 K번째 사람이 계속 제거되는 문제라 문제 자체를 이해하는데에 있어서는 큰 어려움은 없었던 것 같다. [문제 풀이]생각한 방법은 1부터 N까지 모두 덱에 저장하고 N에서 K번째 수를 계속 빼는 방식이었는데 "순회"를 계속 생각하다보니까 다른 방법이 생각났다 !!! 일단 deque는 K부터 저장하도록 해서 N까지 저장하고 앞 쪽에 남은 수는 (ex. K = 3이면 1, 2) N 뒤에 저장하도록 수정하였다. 가장 앞의 원소부터 제거하면서 K-1개 만큼만 po.. 2024. 7. 1.
[자바] 백준 10828번 스택 https://www.acmicpc.net/problem/10828 [문제 이해]문제의 제목처럼 스택을 구현하는 문제였다. 실버 4라고는 하지만 스택만 안다면 충분히 풀 수 있는 문제라 금방 풀었던 것 같다! [문제 풀이]파이썬에서도 스택이나 큐를 사용하는 문제를 풀 때 deque를 사용했던 것처럼 자바에서도 deque를 사용하여 이 문제를 해결하였다.deque는 linked list로 가져와서 사용했고, deque 라이브러리 내에 있는 add(), getLast(), removeLast() 등을 활용했다. 스택이니까 top이나 pop의 경우, 가장 마지막에 삽입된 원소를 찾기 위해 Last에서 꺼낼 수 있도록 해주었다. isEmpty()의 경우, boolean 값을 반환하기 때문에 if문에다가 바로 넣.. 2024. 7. 1.