목록2024/11/27 3
재밌고 어려운 IT를 이해해보자~!
스택을 인덱스로 활용할 발상의 전환이 필요하다. 배열을 순회하면서 현재 원소가 이전의 원소보다 작을 때 까지 배열의 index를 stack에 push 한다.그리고 만약 현재 원소가 스택의 top 원소를 인덱스로 하는 수열의 원소보다 크게 될 경우 stack의 원소를 pop하면서 해당 인덱스에 해당하는 원소들을 현재 원소로 바꿔주는 것이다. 3 5 2 7 Stack[0] [3,5,2,7] 3스택이 빌때까지 반복arr[stack.pop()]) = arr[i]=> arr[0] = arr[1][5,5,2,7]stack empty상태 5>2Stack [1,2] 2스택이 빌때까지 반복arr[stack.pop()] = arr[i]=> arr[2] = arr[3][5,5,7,7]Stack[1] =..
스택을 활용하되 해당 타워의 인덱스를 저장할 자료구조를 활용해야한다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Stack;import java.util.StringTokenizer;public class Main { static class Top { int idx; int height; Top(int idx, int height) { this.idx = idx; this.height = height; } } public static ..
빌딩을 순차적으로 세워놨다고 가정하면 80,000 ~ 1 까지 총합을 구해야하고 그 값은 32억을 넘어간다.따라서 int가 아닌 long 선언!import java.util.*;import java.lang.*;import java.io.*;// The main method must be in a class named "Main".class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int num = scan.nextInt(); long cnt=0; int[] height = new int[num]; for (int i=0; ..