목록알고리즘/백준 (149)
꾸물꾸물 졔의 개발공부

스택 : Stack stack= new Stack(): 스택은 먼저 들어간 원소가 가장 나중에 나오는 LIFO 의 특성을 지니고 있다. 입력받은값이 아직 스택에 저장되어 있지 않다면 스택에 PUSH 해줌과 동시에 '+' 를 출력 . 입력받은값이 스택의 가장 위에 저장되어 있는 값이라면 POP 과 동시에 '-' 출력 . 스택의 가장 위에 있는 값이 입력받은 값과 동일하지 않다면, 만들 수 없는 수열이므로 NO ex) 스택에 1 2 3 4 가 저장되어 있는데, 3을 입력받았다면, 4와 3을 pop 해야하는데, 그렇게 되면 4는 수열에 참여할 수 가 없기 때문에 만들 수 없는 수열이다 ( 오름차순 입력이기 때문에 4는 다시 입력받을 수 없음) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1..

Arrays.sort 람다식을 활용하여 접근 new Comparator 를 사용해도 되지만 , 이번에는 람다식을 사용해 보았다 . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 package jihye01; import java.util.*; import java.io.*; public class bj11650 { public static void main(String args[])throws IOException{ BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); int num= Integer.parseI..

Arrays.sort() 를 이용해서 입력받은 문자열들을 정렬하려고 했지만, 여러가지 조건들이 붙어있다. 1. 같은 길이일 경우엔, 사전 순 2. 같은 문자가 여러개 중복되있을 경우엔 하나만 출력 이를 위해, Arrays.sort 의 comparator 을 사용하였다. 기본 구조로는 , Arrays.sort() 의 매개변수로는 정렬할 배열 , comparator 이다. Arrays.sort ( 입력받은 문자열 배열, new Comparator () { public int compare( 비교변수 1, 비교변수 2 ) { 1. 길이가 같을 경우엔 비교변수 1 과 비교변수 2 를 비교 2. 길이가 다르다면, 비교변수 1의 길이 - 비교변수 2의 길이하여, 양의 정수이면 비교변수 1 의 길이가 더 긴것이므로 ..

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 package jihye01; import java.io.*; public class bj4673 { public static void main(String args[]) throws IOException { StringBuilder sb= new StringBuilder(); boolean check[]=new boolean[10001]; for(int i=1; i
일반적으로 큐는 선입선출의 형태이므로, front와 back 을 지정해두고, front가 pop되면 모든 요소를 다 한칸 앞으로 당겨야한다 . 하지만 모든 연산의 시간복잡도가 O(1) 이 되기를 요구했으므로, 위의 방법을 사용하게 되면 n개의 요소를 모두 옮겨야해서 O(n)의 시간복잡도가 나올것이다 . 그렇기때문에, 요소가 추가되고 빠짐에 따라 요소를 옮기지 않고, front 와 back 을 값을 새로고침 하기로 하였다 . 요소가 하나 추가 : back ++ 젤 앞의 요소가 pop : front-- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42..

스택의 개념을 이용하여 푸는 문제. [1 ) 시간 초과 ver. Scanner 와 System.out.println 둘다 이용] max = 스택의 전체 용량 ( 크기) ptr = 현재 저장되어 있는 요소의 갯수 stack[] = 스택을 저장하는 배열 (본체) ( + 문자열 비교는 == 대신 .equals 이용 ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 import java.util.*; public class IntStack{ private int max; ..

입력에서 숫자 N 개가 공백없이 주어지는 것을 문자열 로 입력받았다. 문자열(get)로 입력받은것을 쪼개서 정수로 변환 머리가 안좋으니 손이 고생이다ㅋㅋ 정수형 배열을 하나 생성하고, int x[] = new int[num] ; x[i]=Integer.parseInt(get.substring(i,i+1)); // 문자열을 substring 함수로, 한문자씩 쪼개어서, 정수로 변환 -> 정수배열에 대입