![[Java] 바이트 & 문자 입출력 스트림](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAgo6w%2FbtsppI1yQr8%2FuMGrjEjrZ11KCKA8LLqx00%2Fimg.jpg)
이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 입출력 스트림자바는 입력 스트림과 출력 스트림을 통해 데이터를 입출력한다.스트림은 단 방향으로 데이터가 흐르는 것을 말한다. 입력 스트림 : 입력 장치 -> 프로그램출력 스트림 : 프로그램 -> 출력 장치프로그램을 기준으로 데이터가 들어오면 입력스트림, 데이터가 나가면 출력 스트림이 된다.프로그램이 다른 프로그램과 데이터를 교환하려면 양쪽 모두 입력 스트림과 출력 스트림이 필요하다. 어떤 데이터를 입출력하느냐에 따라 스트림은 아래의 두 종류로 구분할 수 있다.바이트 스트림 : 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 입출력할 때 사용문자 스트림 : 문자만 입출력할 때 사용두 ..
![[Java] 백준 9012번 문제 (괄호)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcveN1%2Fbtsqh3j10bt%2F5Tn59Qc1f43JvXRbSm9cs1%2Fimg.png)
문제설명 소스코드 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 i = 0; i < T; ++i) { boolean ans = func(sc.next()); //nextLine()이 아니라 next()를 사용 if(ans == true) System.out.println("YES"); else System.out.println("NO"); } } public static boolean func(String str) { Stack stac..
![[Java] 스트림(정렬, 루핑, 매칭, 집계, 수집, 병렬 처리)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRFkZX%2Fbtsplqt8vYp%2FEMAy0EOkY9rFjq0rUc6Rl1%2Fimg.jpg)
이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 요소 정렬정렬은 요소를 오름차순 또는 내림차순으로 정렬하는 중간 처리 기능이다.요소를 정렬하는 메소드는 아래와 같다. Comparable 구현 객체의 정렬스트림의 요소가 객체일 경우 객체가 Comparable을 구현하고 있어야만 sorted() 메소드를 사용하여 정렬할 수 있다. 만약 내림차순으로 정렬하고 싶다면 Comparator.reverseOrder() 메소드가 리턴하는 Comparator를 매개값으로 제공하면 된다. 아래의 더보기를 누르면 예제 코드를 볼 수 있다.더보기Student.javapublic class Student implements Comparable { //Co..
![[Java] 백준 28278번 문제 (스택 2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbrtniv%2Fbtsp35wCk5r%2F74ckKVFHQJeQrWkaJXjyN1%2Fimg.png)
문제설명 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); Stack stack = new Stack(); //스택 생성 StringTokenizer st; int N = Integer.par..
![[Java] 백준 10773번 문제 (제로)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrWfIc%2Fbtsp9ZhmtP6%2F3KmVgojpgbUYDtDrxVqlQ0%2Fimg.png)
문제설명 소스코드 import java.util.Stack; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Stack stack = new Stack(); //스택 생성 int K = sc.nextInt(); for(int i = 0; i < K; i++) { int input = sc.nextInt(); if(input == 0) stack.pop(); //0이면 팝 else stack.push(input); //0이 아니면 푸시 } int sum = 0; for(int i = 0; i < stack.size(); ++i) { s..
![[Java] 스트림(스트림 개념, 스트림 얻기, 필터링, 매핑)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTqzbT%2Fbtspk96uUz9%2FfJI7xdawXGwwC2YhkX9C00%2Fimg.jpg)
이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 스트림이란스트림을 사용하지 않고는 컬렉션 및 배열에 저장된 요소를 반복 처리하기 위해서는 for문을 이용하거나 Iterator를 이용했다. 그리고 Set에서 요소를 하나씩 처리하기 위해 Iterator를 사용했다. Java 8부터 컬렉션 및 배열의 요소를 반복 처리하기 위해 스트림을 사용할 수 있다.스트림은 요소들이 하나씩 흘러가면서 처리된다는 의미를 가지고 있다.Stream은 Iterator와 비슷한 반복자이지만, 아래와 같은 차이점을 가지고 있다.- 내부 반복자이므로 처리 속도가 빠르고 병렬 처리에 효율적이다. (내부에서 멀티 스레딩으로 처리)- 람다식으로 다양한 요소 처리를 정의..
![[Java] 람다식(Lambda Expressions)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczqnUZ%2Fbtso92FIELl%2FIc1ksMRXpWpkoIyfMQ0Wa1%2Fimg.jpg)
이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 람다식의 개념자바는 함수형 프로그래밍을 위해 Java 8부터 람다식을 지원한다.자바는 객체지향 프로그래밍 언어로써 객체가 없이 함수가 존재할 수 없다.클래스 내부에 무조건 함수가 있어야 하기 때문에 자바에서는 함수를 함수라 부르지 않고 메소드라고 부른다.함수형 프로그래밍함수형 프로그래밍이란 함수를 정의하고 이 함수를 데이터 처리부로 보내 데이터를 처리하는 기법을 가진다.데이터 처리부는 데이터만 가지고 있을 뿐, 처리 방법이 정해져 있지 않아 외부에서 제공된 함수에 의존한다.즉, 함수에 어떤 처리코드가 적혀있느냐에 따라 해당 데이터를 가지고 발생하는 실행결과가 달라질 수 있다는 뜻이다...
![[Java] 컬렉션 프레임워크(LIFO & FIFO, 동기화된 컬렉션, 수정할 수 없는 컬렉션)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRl90z%2FbtsoZnYx8qW%2Fg6WEsz0zhCGWENAYzyg7E0%2Fimg.jpg)
이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. LIFO & FIFOLIFO는 스택(Stack) 자료구조를 뜻하고, FIFO는 큐(Queue) 자료구조를 뜻한다.컬렉션 프레임워크는 LIFO 자료구조를 제공하는 스택 클래스와 FIFO 자료구조를 제공하는 큐 인터페이스를 제공하고 있다. StackStack 클래스는 LIFO 자료구조를 구현한 클래스이다.아래는 Stack 객체를 생성하는 방법이다.Stack stack = new Stack();Stack stack = new Stack(); Stack 클래스는 Vector 클래스를 상속했다.따라서 Stack 객체는 동기화 처리가 되어있다. 즉, 멀티스레딩 환경에서 안전하게 처리 가능하다.r..