반응형

알고리즘/스텍 6

[백준] 30470 : 호반우가 학교에 지각한 이유 3 (JAVA)

https://www.acmicpc.net/problem/30470 [풀이과정]stack을 사용하였고 max가 갱신될 때마다 stack에 저장된 값들을 확인하면서 길이를 갱신하며 pop, push를 해주었는데 틀림. 로직은 맞는 것 같은데 왜 틀린지 잘 모르겠음.정답코드는 max 갱신 시마다 값을 확인하는 로직을 없앰. 새로 추가되는 통나무가 항상 제일 긴 통나무이고 max 값을 기준으로 통나무 길이가 갱신되는 것이기 때문에 max값만 저장해준 후 sum 값을 구할 때 로직 실행해켜주면 됨. [코드]import java.io.*;import java.util.*;public class Main { static BufferedReader br = new BufferedReader(new InputSt..

알고리즘/스텍 2025.04.02

[백준] 6198 : 옥상 정원 꾸미기 (JAVA)

https://www.acmicpc.net/problem/6198 [풀이과정]예전에 비슷한 문제를 풀었던 것 같은데 문제 이름이 생각이 안난다.그때는 그냥 배열에 값 넣고 비교하며 풀었던 것 같다.이번엔 스택 이용해서 풀었는데 조금 더 복잡하고 사고해야 했었지만 더 간결한 코드가 나온 것 같아 기분이 좋다.answer 변수를 long 타입으로 선언해야 함에 주의! [코드]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Stack;import java.util.StringTokenizer;/*N개의 빌딩 = = = = ..

알고리즘/스텍 2024.11.01

[백준] 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

[백준] 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
반응형