반응형

전체 글 188

[백준] 17680 : 막대기

풀이과정 뒤에서부터 가장 큰 값을 갱신하며 세기. 1등 코드 메모리 : 14844 KB 시간 : 148 ms 코드길이 : 1558 B 내 코드 1. 배열로 했을 때 메모리 : 22852 KB 시간 : 244 ms 코드길이 : 797 B 2. 스택으로 했을 때 메모리 : 25664 KB 시간 : 292 ms 코드길이 : 758 B >> for문과 while문 둘 다 써봤는데 차이가 없었음 [1등 코드] import java.io.*; public class Main { public void solution() throws Exception { int N = nextInt(); int[] arr = new int[N]; for (int i = 0; i < N; i++) arr[i] = nextInt(); i..

알고리즘/스텍 2023.03.29

[백준] 20301 : 반전요세푸스

풀이과정 앞뒤로 데이터를 넣었다 뺐다 해야 하기 때문에 덱 선택. 오른쪽방향일 때는 앞에서 빼서 뒤로 넣고 왼쪽 방향일 때는 뒤에서 빼고 앞으로 넣음 1등코드 메모리 : 12388 KB 시간 : 96ms 코드길이 : 1347 B 내코드 메모리 : 303608 KB 시간 : 740 ms 코드길이 : 1924 B [1등 코드] 리스트 사용. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.List; public class Main{ public ..

알고리즘/덱 2023.03.29

[백준] 1021 : 회전하는 큐

풀이과정 전체 구조는 2번연산과 3번연산 중 더 적은 연산을 수행하는 것으로 함. 뽑고자 하는 수의 인덱스를 계속 변경하며 0이 됐을 때 삭제연산을 수행 같은 언어 사용자의 1등 코드 메모리 : 12940 KB 시간 : 68 ms 코드길이 : 830 B 내 코드 메모리 : 14252 KB 시간 : 136 ms 코드길이 : 3137 B [상위권 코드] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int N, M, result, size; static int arr[]; publi..

알고리즘/덱 2023.03.29

[백준] 1966 : 프린터 큐

아무리 생각해도 논리는 맞는 것 같은데 자꾸 오류가 떠서 이 문제만 하루는 잡고 있었다.. 논리오류가 아닌 코드오류였던 것에 반성하자 풀이과정 가장 큰 중요도를 기준으로 맨 앞의 문서의 중요도가 낮으면 빼낸 후 뒤로 보내기 중요한 것은 같은 중요도를 가진 문서도 많을 수 있다는 것. >> 원하는 문서의 위치를 저장하여 위치가 맨 앞일 때가 답임 가장 큰 중요도도 계속해서 바뀌기 때문에 중요도를 넣을 배열도 생성. 문제를 풀고 얻어낸 점 BufferedReader와 StringTokenizer에 대한 이해 if-else문의 논리구조 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import j..

알고리즘/큐 2023.03.28

[백준] 1158 : 요세푸스 문제

고민한 부분 빼낸 다음의 수를 어떻게 1번째로 만들 수 있을까? 풀이과정 >> k-1번 동안 앞의 수들을 삭제 후 뒤로보내다 k번째 일 때 삭제 후 "수, "형식으로 출력 이때 queue의 길이가 1이면 "수>" 형식으로 출력 후 종료 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; import java.io.IOException; import java.util.LinkedList; import java.util.Queue; public class Main { ..

알고리즘/큐 2023.03.26

[백준] 1874 : 스택수열

풀이실패, 다른 사람 코드 참고해서 내 코드 만듦. 풀이과정 입력한 수까지 넣고, 이것을 저장하여 기준점으로 사용 >> 오름차순 입력을 위해 기준점보다 클 때 push 후 pop ( 다 push 후의 peek가 현재의 수이기 때문 ) 기준점보다 작거나 같을 때는 peek를 확인 >> 현재의 수가 peek와 같으면 pop, peek가 더 크면 "NO" import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException { Buff..

알고리즘/스텍 2023.03.24

[백준] 9012 : 괄호

풀이과정 1) 여는괄호와 닫는괄호의 짝이 맞아야 함. 2) 여는괄호일 때 push 3) 닫는괄호일 때 pop 4) 빈 스택에서 pop 하거나, 스택이 비어있지 않을 때가 VPS가 아님. 내가 고민한 부분 1) input의 String의 괄호를 하나씩 다루는 방법 >> char 사용. import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); for(int t = 1; t

알고리즘/스텍 2023.03.23
반응형