java
-
백준 10799 쇠막대기 문제 풀이 Stack 활용 ( Java )Problem Solving/Java 2019. 10. 20. 14:53
10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. 레이저는 어떤 쇠막대기의 양 끝점과 www.acmicpc.net 괄호 대신 index를 저장할 생각을 얼른 못해서 한참 헤맸다.. 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 ..
-
덱에 대해 알아보자Knowledge/Data Structure 2019. 10. 18. 17:15
- 덱이란? 양쪽 끝 모두에서 자료를 넣고 뺄 수 있는 자료구조. 한 쪽에서만 자료를 넣고 빼면 스택처럼 사용할 수 있고 한 쪽에서 자료를 넣고 한 쪽으로 빼면 큐처럼 사용할 수 있다. 하지만 덱을 사용해야만 풀 수 있는 문제는 거의 없기 때문에 PS에서는 거의 사용되지 않는다 - 주로 사용하는 메소드 addFirst: 덱 앞 쪽에 자료를 넣는 연산 addFirst: 덱 뒷 쪽에 자료를 넣는 연산 removeFirst: 덱 앞 쪽에서 자료를 빼는 연산 removeLast: 덱 뒷 쪽에서 자료를 빼는 연산 getFirst : 덱 앞 쪽에있는 자료를 가져온다 getLast : 덱 뒷 쪽에있는 자료를 가져온다 empty: 덱이 비어있는지 아닌지를 알아보는 연산 자세한 메소드는 1 java.util.Deque ..
-
JAVA - 증감 연산자를 앞에 붙일 때와 뒤에 붙일 때의 차이! ( 선위 증감연산자 / 후위 증감연산자 )Knowledge/Java 2019. 10. 10. 00:28
++ 은 변수의 값을 1 증가시키는 연산자고 --은 변수의 값을 1 감소 시키는 연산자다. 이는 변수 앞에 붙일 수도 있고 뒤에 붙일 수도 있다. 이를 앞에 붙이면 '선위 증감 연산자'라고 하고 뒤에 붙이면 '후위 증감 연산자'라고 한다 근데 변수에 한번 붙여보면 별 차이가 없어 보인다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 int front = 1; // 증감 연산자를 앞에 붙일 변수 - 1로 초기화 int back = 1; // 증감 연산자를 뒤에 붙일 변수 - 1로 초기화 ++front; // 선위 증감 연산자 사용 back++; // 후위 증감 연산자 System.out.println(front); // 2출력 System.out.println(back)..
-
Java 상수 ( final은 무엇인가 )Knowledge/Java 2019. 10. 10. 00:00
Java에서의 상수 선언은 기본적으로 변수 선언과 크게 다르지 않다. 변수는 1 2 int i; // 변수 i 선언 이렇게 데이터 타입 + 변수 이름의 조합으로 선언한 변수 앞에 1 2 final int j; // 상수 j 선언 이렇게 final만 붙이면 상수가 선언된다. 대신 대문자 명명규칙과 띄어쓰기가 필요한 경우 _을 쓸 것을 권장하니 1 2 3 final int J; 이렇게 선언하자. 이 상수는 변수와 달리 한번 값을 할당하면 다시는 값을 할당할 수 없는데 이런 상수를 어디다 쓸까? 크게 두가지다 1. 값이 변하면 위험한 경우 2. 값만 봤을때 무엇을 의미하는지 쉽게 파악할 수 없는 값을 사용할 때 1의 경우는 로직에 원주율을 사용해야 하는 경우를 가정하여 예를 들어보자 이럴 때 원주율 값이 변해..
-
Java 변수, 리터럴, 자료형, 형변환Knowledge/Java 2019. 10. 9. 21:29
Java에서 변수는 타입과 변수 이름으로 선언한다. 1 2 3 int count; // 타입 : int // 변수 이름 : count 이때 변수 이름은 _ 나 $나 문자( 한글도 되지만 영어로 쓰자 )로 시작해야 한다 ( 필수 ) 또한 java 변수 이름은 낙타표기법을 사용하는 것을 권장한다. ( 권장이지만 그냥 필수라고 외우자 ) ( 낙타 표기법 : 소문자로 시작하고 띄어쓰기가 필요한 부분은 대문자로 쓰는 표기법 ex - camelCase ) 변수는 단 하나의 값만을 담을 수 있다. 예를 들어 1 2 3 4 5 6 7 8 9 10 11 count = 10; // 10을 담으면 System.out.println(count); // count 값으로 10이 출력되지만 count = 20; // 20을 담으..
-
스프링에서 컨트롤러로 넘어온 파일 저장하는 방법Knowledge/Spring 2019. 9. 18. 21:59
프론트 단에서 ajax로 파일을 서버로 넘기는 건 ( https://takeknowledge.tistory.com/60 ) 참고 파일이 컨트롤러 단으로 넘어오면 파일을 저장하고 나중에 사용할 수 있도록 파일 정보를 데이터베이스에 저장해야 한다. 이걸 하는 방법은 - 설정 먼저 파일 처리에 필요한 라이브러리를 메이븐에 등록해줘야 한다. 파일은 Multipart ( HTTP프로토콜의 바디 부분에 데이터를 여러 부분으로 나눠서 보낸 것 ) 로 넘어오는데 HttpServletRequest는 웹 클라이언트가 전달하는 Multipart데이터를 쉽게 처리하는 메소드를 제공하지 않기 때문이다. 대표적인 파일 처리 라이브러리는 아파치 재단의 commons-fileupload 가 있다. 추가를 위해선 1 2 3 4 5 6..
-
백준 1158번 조세퍼스 문제 큐 활용 풀이 ( Java )Problem Solving/Java 2019. 9. 5. 18:11
1158번: 조세퍼스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 import java.io.*; import java.util.LinkedList; import java.util.Queue; public class Main { public stat..
-
스택에 대해 알아보자Knowledge/Data Structure 2019. 9. 4. 22:25
- 스택이란? 한쪽 끝 ( 가장 위 - Top )에서만 자료를 넣고 뺄 수 있는 자료구조. 마지막으로 넣은 것이 가장 먼저 나오기 때문에 LIFO ( Last In First Out ) 라고도 한다. - 주로 사용하는 메소드 push: 스택에 자료를 넣는 연산 pop : 스택에서 자료를 빼는 연산 peek: 스택의 가장 위에 있는 자료를 보는 연산 empty: 스택이 비어있는지 아닌지를 알아보는 연산 size: 스택에 저장되어있는 자료의 개수를 알아보는 연산 - 구현 정확한 구현이 아닌 백준 10828번 스택 문제 ( https://www.acmicpc.net/problem/10828 ) 의 조건 push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출..