diff --git a/week1/sumin/Backjoon_1000.java b/week1/sumin/Backjoon_1000.java
new file mode 100644
index 0000000..2351e08
--- /dev/null
+++ b/week1/sumin/Backjoon_1000.java
@@ -0,0 +1,19 @@
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+public class Backjoon_1000 {
+ public static void main(String[] args) throws IOException {
+
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ String str = br.readLine();
+ StringTokenizer st = new StringTokenizer(str," ");
+ int a = Integer.parseInt(st.nextToken());
+ int b = Integer.parseInt(st.nextToken());
+
+ System.out.println(a+b);
+ }
+
+}
diff --git a/week1/sumin/Backjoon_1001.java b/week1/sumin/Backjoon_1001.java
new file mode 100644
index 0000000..2270926
--- /dev/null
+++ b/week1/sumin/Backjoon_1001.java
@@ -0,0 +1,16 @@
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+class BackJoon_1001{
+ public static void main(String[]args) throws IOException{
+ BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
+ String str=br.readLine();
+ StringTokenizer st=new StringTokenizer(str," ");
+ int A=Integer.parseInt(st.nextToken());
+ int B=Integer.parseInt(st.nextToken());
+
+ System.out.println(A-B);
+ }
+}
\ No newline at end of file
diff --git a/week1/sumin/Backjoon_1008.java b/week1/sumin/Backjoon_1008.java
new file mode 100644
index 0000000..51b1d2f
--- /dev/null
+++ b/week1/sumin/Backjoon_1008.java
@@ -0,0 +1,16 @@
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+public class Backjoon_1008 {
+ public static void main(String[]args)throws IOException{
+ BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
+ String str=br.readLine();
+ StringTokenizer st=new StringTokenizer(str," ");
+ int A=(int) Double.parseDouble(st.nextToken());
+ int B=(int) Double.parseDouble(st.nextToken());
+
+ System.out.println(A/B);
+ }
+}
diff --git a/week1/sumin/Backjoon_10171.java b/week1/sumin/Backjoon_10171.java
new file mode 100644
index 0000000..6d32706
--- /dev/null
+++ b/week1/sumin/Backjoon_10171.java
@@ -0,0 +1,23 @@
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+
+public class Backjoon_10171{
+ public static void main(String[] args) throws IOException {
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ bw.write("\\ /\\");
+ bw.newLine(); // 줄 구분자
+
+ bw.write(" ) ( ')");
+ bw.newLine();
+
+ bw.write("( / )");
+ bw.newLine();
+
+ bw.write(" \\(__)|");
+
+ bw.flush();
+ bw.close();
+ }
+}
\ No newline at end of file
diff --git a/week1/sumin/Backjoon_10172.java b/week1/sumin/Backjoon_10172.java
new file mode 100644
index 0000000..fd7b3da
--- /dev/null
+++ b/week1/sumin/Backjoon_10172.java
@@ -0,0 +1,20 @@
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+
+public class Backjoon_10172 {
+ public static void main(String[] args)throws IOException{
+
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ bw.write("|\\_/|\n");
+ bw.write("|q p| /}\n");
+ bw.write("( 0 )\"\"\"\\\n");
+ bw.write("|\"^\"` |\n");
+ bw.write("||_/=\\\\__|\n");
+
+ bw.flush();
+ bw.close();
+ }
+
+}
diff --git a/week1/sumin/Backjoon_10430.java b/week1/sumin/Backjoon_10430.java
new file mode 100644
index 0000000..3fe0aca
--- /dev/null
+++ b/week1/sumin/Backjoon_10430.java
@@ -0,0 +1,26 @@
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.StringTokenizer;
+
+class Backjoon_10430{
+ public static void main(String[]args)throws IOException{
+ BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
+ StringTokenizer st=new StringTokenizer(bf.readLine()," ");
+
+ int a=Integer.parseInt(st.nextToken());
+ int b=Integer.parseInt(st.nextToken());
+ int c=Integer.parseInt(st.nextToken());
+
+ bw.write((a+b)%c+"\n");
+ bw.write(((a%c)+(b%c))%c+"\n");
+ bw.write((a*b)%c+"\n");
+ bw.write(((a%c)*(b%c))%c+"\n");
+
+ bw.flush();
+ bw.close();
+ }
+}
\ No newline at end of file
diff --git a/week1/sumin/Backjoon_10869.java b/week1/sumin/Backjoon_10869.java
new file mode 100644
index 0000000..2b9a802
--- /dev/null
+++ b/week1/sumin/Backjoon_10869.java
@@ -0,0 +1,28 @@
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.StringTokenizer;
+
+public class Backjoon_10869 {
+ public static void main(String[] args) throws IOException {
+ BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw= new BufferedWriter(new OutputStreamWriter(System.out));
+ String input=br.readLine();
+
+ StringTokenizer st= new StringTokenizer(input," ");
+ int a= Integer.parseInt(st.nextToken());
+ int b=Integer.parseInt(st.nextToken());
+
+ bw.write(Integer.toString(a-b));
+ bw.write(Integer.toString(a-b));
+ bw.write(Integer.toString(a*b));
+ bw.write(Integer.toString(a/b));
+ bw.write(Integer.toString(a%b));
+
+ bw.flush();
+ bw.close();
+ }
+
+}
diff --git a/week1/sumin/Backjoon_10926.java b/week1/sumin/Backjoon_10926.java
new file mode 100644
index 0000000..96d77b4
--- /dev/null
+++ b/week1/sumin/Backjoon_10926.java
@@ -0,0 +1,21 @@
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+
+public class Backjoon_10926 {
+ public static void main(String[] args) throws IOException{
+ BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
+ String year=br.readLine();
+
+ bw.write(year);
+ bw.write("??!");
+
+ bw.flush();
+ bw.close();
+
+ }
+
+}
diff --git a/week1/sumin/Backjoon_2557.java b/week1/sumin/Backjoon_2557.java
new file mode 100644
index 0000000..6e98721
--- /dev/null
+++ b/week1/sumin/Backjoon_2557.java
@@ -0,0 +1,13 @@
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+
+public class Backjoon_2557 {
+ public static void main(String[] args) throws IOException{
+ BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
+ bw.write("Hello World!");
+
+ bw.flush();
+ bw.close();
+ }
+}
diff --git a/week1/sumin/Backjoon_3033.java b/week1/sumin/Backjoon_3033.java
new file mode 100644
index 0000000..53528b5
--- /dev/null
+++ b/week1/sumin/Backjoon_3033.java
@@ -0,0 +1,31 @@
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.StringTokenizer;
+
+class BackJoon_3033{
+ public static void main(String[] args) throws IOException{
+ BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
+ String input=br.readLine();
+ StringTokenizer st=new StringTokenizer(input," ");
+ BufferedWriter bw= new BufferedWriter(new OutputStreamWriter(System.out));
+ int king = Integer.parseInt(st.nextToken());
+ int queen=Integer.parseInt(st.nextToken());
+ int rook=Integer.parseInt(st.nextToken());
+ int bishop=Integer.parseInt(st.nextToken());
+ int knight=Integer.parseInt(st.nextToken());
+ int pawn=Integer.parseInt(st.nextToken());
+
+ bw.write(Integer.toString(1-king)+" ");
+ bw.write(Integer.toString(1-queen)+" ");
+ bw.write(Integer.toString(2-rook)+" ");
+ bw.write(Integer.toString(2-bishop)+" ");
+ bw.write(Integer.toString(2-knight)+" ");
+ bw.write(Integer.toString(8-pawn)+" ");
+
+ bw.flush();
+ bw.close();
+ }
+}
\ No newline at end of file
diff --git "a/week1/sumin/Stream(\354\212\244\355\212\270\353\246\274).md" "b/week1/sumin/Stream(\354\212\244\355\212\270\353\246\274).md"
new file mode 100644
index 0000000..deb800b
--- /dev/null
+++ "b/week1/sumin/Stream(\354\212\244\355\212\270\353\246\274).md"
@@ -0,0 +1,93 @@
+# 스트림(Stream)
+
+### 스트림이란?
+---
+
+스트림은 데이터의 이동 흐름이다.
+
+즉, A수도관에서 B수도관으로 이동하는 물의 흐름이라고 할 수 있다.
+
+프로그래밍에서는 다음과 같은 것들을 스트림이라고 한다.
+
+- HTTP 응답 데이터(브라우저가 요청하고 서버가 응답하는 HTTP 응답 데이터)
+
+
+
+
+용도에 따라 입력 스트림(InputStream), 출력 스트림(OutputStream)으로 나뉜다.
+
+```java
+BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
+```
+
+### InpuStream
+---
+
+바이트 단위로 데이터를 처리한다.
+
+```java
+import java.io.IOException;
+import java.io.InputStream;
+
+public class StreamTest {
+ public static void main(String[] args) throws IOException {
+ InputStream in=System.in;
+
+ int a;
+ a=in.read();
+
+ System.out.println(a);
+
+ }
+}
+```
+
+read()메서드는 1Byte의 int 자료형으로 값을 받는다.
+
+이 int값은 아스키코드 값이기 때문에 숫자를 입력해도 아스키 코드 값으로 출력된다.
+
+```java
+1 //입력값
+49 //출력값
+```
+
+또한, System.in의 타입도 InputStream이다.
+
+
+이 방법만으로는 문자를 받기 힘드니 InputStreamReader를 사용해서 바이트 단위 데이터를 문자 단위로 처리할 수 있게하였다.
+
+### InputStreamReader
+---
+
+문자(Character) 단위로 데이터를 처리한다.
+
+InputStream의 데이터를 문자로 변환하는 중개 역할을 한다.
+
+```java
+InputStreamReader reader = new InputStreamReader(new InputStream);
+```
+
+InputStreamReader은 InputStream 객체를 입력으로 가지고 있어야 한다.
+
+
+### BufferedReader
+---
+버퍼를 두어 문자를 버퍼에 일정 정도 저장해둔 뒤 한 번에 보낸다.
+
+```java
+BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
+```
+
+```java
+InputStream inputstream = System.in;
+InputStreamReader sr = new InputStreamReader(inputstream);
+BufferedReader br = new BufferedReader(sr);
+```
+
+1. **바이트 단위**로 데이터를 처리하는 InputStream를 통해서 데이터를 입력받는다.,
+2. 바이트 단위 데이터를 **문자(Character) 단위**로 처리하기 위해서 InputStreamReader로 감싸준다.
+3. 버퍼(Buffer)를 이용해 입력받은 문자를 쌓아둔 뒤 한 번에 **문자열(String)**로 보낸다.
+
+[System.in](http://System.in) == InputStream → InputStreamReader → BufferedReader
+
+바이트 단위 → Char 단위 → String 단위
\ No newline at end of file
diff --git "a/week1/sumin/\353\262\204\355\215\274\353\245\274 \354\235\264\354\232\251\355\225\234 \354\236\205\354\266\234\353\240\245.md" "b/week1/sumin/\353\262\204\355\215\274\353\245\274 \354\235\264\354\232\251\355\225\234 \354\236\205\354\266\234\353\240\245.md"
new file mode 100644
index 0000000..be45007
--- /dev/null
+++ "b/week1/sumin/\353\262\204\355\215\274\353\245\274 \354\235\264\354\232\251\355\225\234 \354\236\205\354\266\234\353\240\245.md"
@@ -0,0 +1,112 @@
+# BufferedReader / BufferedWriter
+
+### 버퍼
+
+---
+
+- 데이터를 한 곳에서 다른 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 임시 메모리 영역
+- 입출력 속도 향상을 위해 버퍼 사용
+
+**버퍼 플러쉬(buffer flush)**
+
+버퍼에 남아있는 데이터를 출력시킴(버퍼를 비우는 동작)
+
+
+버퍼를 거쳐가는 데 왜 빠르냐고?
+
+하드디스크나 외부 장치와의 데이터 입출력은 시간이 오래 걸린다.
+
+따라서 중간에 메모리 버퍼를 두고 한꺼번에 묶어서 이동시키는 것이 효율적이고 빠르다.
+
+### BufferdReader, BufferedWriter
+
+---
+
+- 버퍼를 이용해 읽고 쓰는 함수
+- 버퍼를 이용하기 때문에 입출력의 효율이 좋아진다.
+
+BufferedReader : 버퍼를 이용한 입력 (→ Scanner와 유사)
+
+BufferedWriter : 버퍼를 이용한 출력 (→ System.out.println과 유사)
+
+위 두개를 사용하기 위해서 다음의 추가 import가 필요하다.
+
+```java
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+```
+
+### Scanner과 비교
+
+---
+
+* BufferedReader은 Enter만 경계로 인식하고 받은 데이터를 String으로 고정한다.
+
+Scanner에 비해 성능이 좋은 이유?
+* 버퍼가 있는 스트림이다.
+* 정규식을 검사하지 않는다.
+즉, 하나하나 문자를 보내는 것이 아니라 한 번에 모아둔 다음에 보내니 속도가 빠르고 별다른 정규식을 검사하지 않고 문자열 그대로 받아들이기 때문에 속도가 빠르다.
+
+
+### BufferdReader사용법
+
+---
+
+```java
+BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언
+String s = bf.readLine(); //String
+int i = Integer.parseInt(bf.readLine()); //Int
+```
+
+1. 입력은 readLine()을 사용하여 한 줄을 입력받는다.
+
+ 하지만, 무조건 return 값이 String이기 떄문에
+
+ 다른 타입으로 입력을 받으려면 변환을 해주어야 한다.
+
+2. throws IOException을 이용해서 예외처리를 해주어야 한다.
+
+#### 메서드 정리
+* readLine() : 한 줄의 문자열을 읽음(String)
+* skip(n) : n개의 문자를 스킵하고 넘어간다(Long)
+
+### 타입 변환하기
+
+---
+
+```java
+StringTokenizer st = new StringTokenizer(s); //StringTokenizer인자값에 입력 문자열 넣음
+int a = Integer.parseInt(st.nextToken()); //첫번째 호출
+int b = Integer.parseInt(st.nextToken()); //두번째 호출
+
+String array[] = s.split(" "); //공백마다 데이터 끊어서 배열에 넣음
+```
+
+BufferedReader을 이용하면 Line 단위로만 나눠지기에 공백 단위로 구분하려면 따로 작업을 해주어야 한다.
+
+1. StringTokenizer에 nextToken()을 쓰면 입력받은 값을 공백단위로 구분할 수 있다.
+2. String.split()함수를 이요하여 배열에 공백단위로 끊어서 데이터를 넣고 사용한다.
+
+### BufferedWriter사용법
+
+---
+
+```java
+BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); //할당된 버퍼에 값 넣어주기
+String s = "abcdefg"; //출력할 문자열
+bw.write(s+"\n"); //버퍼에 있는 값 전부 출력
+bw.flush(); //남아있는 데이터를 모두 출력시킴
+bw.close(); //스트림을 닫음
+```
+
+1. flush(), close()를 호출해야한다.
+2. bw.write()에는 개행기능이 없기에 자동으로 개행을 해주어야 한다.
+
+
+#### 메서드 정리
+* write(s) : 문자, 문자열을 출력한다.
+* newLine() : 빈 줄을 작성한다.
+* flush() : 버퍼에 있는 모든 값을 출력시킨다.
+* close() : 스트림을 종료한다.
diff --git a/week2/sumin/Backjoon_10773.java b/week2/sumin/Backjoon_10773.java
new file mode 100644
index 0000000..c47e942
--- /dev/null
+++ b/week2/sumin/Backjoon_10773.java
@@ -0,0 +1,45 @@
+package week2.sumin;
+
+
+import java.io.*;
+import java.util.Stack;
+
+public class Backjoon_10773 {
+ private static Stack stack = new Stack<>();
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ int K = Integer.parseInt(br.readLine());
+
+ for (int i = 0; i < K; i++) {
+ makeStack(Integer.parseInt(br.readLine()));
+ }
+
+ bw.write(String.valueOf(calculateSum()));
+
+ bw.flush();
+ bw.close();
+ br.close();
+ }
+
+ //입력받은 숫자를 기반으로 stack 만들기
+ private static void makeStack(int num) {
+ if (num != 0) {
+ stack.push(num);
+ } else {
+ stack.pop();
+ }
+ }
+
+ //stack의 값 계산하기
+ private static int calculateSum() {
+ int sum = 0;
+ int stackSize=stack.size();
+ for (int i = 0; i < stackSize; i++) {
+ sum+=stack.pop();
+ }
+ return sum;
+ }
+}
diff --git a/week2/sumin/Backjoon_10828.java b/week2/sumin/Backjoon_10828.java
new file mode 100644
index 0000000..ee7e023
--- /dev/null
+++ b/week2/sumin/Backjoon_10828.java
@@ -0,0 +1,67 @@
+package week2.sumin
+
+import java.io.*;
+import java.util.Stack;
+
+public class Backjoon_10828 {
+ private static Stack integerStack = new Stack<>();
+ private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ int N = Integer.parseInt(br.readLine());
+
+ for (int i = 0; i < N; i++) {
+ String[] input = br.readLine().split(" ");
+ calculateStack(input);
+ }
+
+ bw.flush();
+ bw.close();
+ br.close();
+ }
+
+ private static void calculateStack(String[] input) throws IOException {
+ String command = input[0];
+
+ if (command.equals("push")) {
+ integerStack.push(Integer.parseInt(input[1]));
+ }
+
+ if (command.equals("top")) {
+ if (integerStack.size() != 0) {
+ bw.write(String.valueOf(integerStack.peek()));
+ bw.write("\n");
+ } else {
+ bw.write(String.valueOf(-1));
+ bw.write("\n");
+ }
+ }
+
+ if (command.equals("size")) {
+ bw.write(String.valueOf(integerStack.size()));
+ bw.write("\n");
+ }
+
+ if (command.equals("empty")) {
+ if (integerStack.isEmpty()) {
+ bw.write(String.valueOf(1));
+ bw.write("\n");
+ } else {
+ bw.write(String.valueOf(0));
+ bw.write("\n");
+ }
+ }
+
+ if (command.equals("pop")) {
+ if (integerStack.size() != 0) {
+ bw.write(String.valueOf(integerStack.pop()));
+ bw.write("\n");
+ } else {
+ bw.write(String.valueOf(-1));
+ bw.write("\n");
+ }
+
+ }
+ }
+}
diff --git a/week2/sumin/Backjoon_1406.java b/week2/sumin/Backjoon_1406.java
new file mode 100644
index 0000000..c199c3f
--- /dev/null
+++ b/week2/sumin/Backjoon_1406.java
@@ -0,0 +1,65 @@
+import java.io.*;
+import java.util.Stack;
+
+public class Backjoon_1406 {
+ public static void main(String[] args) throws IOException {
+ //커서를 기준으로 왼쪽스택, 오른쪽 스택으로 구분함
+ Stack leftStack = new Stack<>();
+ Stack rightStack = new Stack<>();
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ StringBuilder sb = new StringBuilder();
+
+ //초기값은 다 커서보다 왼쪽에 있으니깐 leftStack에 넣기
+ String[] array = br.readLine().split("");
+ for (int i = 0; i < array.length; i++) {
+ leftStack.push(array[i]);
+ }
+
+ // 입력할 명령어의 개수
+ int M = Integer.parseInt(br.readLine());
+
+ //명령어 실행
+ for (int i = 0; i < M; i++) {
+ String[] input = br.readLine().split(" ");
+ String command = input[0];
+ switch (command) {
+ case "P":
+ leftStack.push(input[1]);
+ break;
+ case "D":
+ if(!rightStack.isEmpty()){
+ leftStack.push(rightStack.pop());
+ }
+ break;
+ case "L":
+ if(!leftStack.isEmpty()){
+ rightStack.push(leftStack.pop());
+ }
+ break;
+ case "B":
+ if(!leftStack.isEmpty()){
+ leftStack.pop();
+ }
+ break;
+ }
+ }
+
+ //왼쪽 스택에 있는 문자열을 오른쪽 스택으로 올린다.
+ while (!leftStack.isEmpty()) {
+ rightStack.push(leftStack.pop());
+ }
+
+ //오른쪽 스택에 있는 값을 하나씩 pop해서 문자열을 만든다.
+ while (!rightStack.isEmpty()) {
+ sb.append(rightStack.pop());
+ }
+
+ bw.write(String.valueOf(sb));
+
+ bw.flush();
+ bw.close();
+ br.close();
+ }
+
+}
diff --git a/week2/sumin/Backjoon_18528.java b/week2/sumin/Backjoon_18528.java
new file mode 100644
index 0000000..fca2669
--- /dev/null
+++ b/week2/sumin/Backjoon_18528.java
@@ -0,0 +1,51 @@
+package week2.sumin;
+
+import java.io.*;
+import java.util.*;
+
+public class Backjoon_18528 {
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+ Deque deq = new LinkedList<>();
+
+ int num = Integer.parseInt(br.readLine());
+
+ for (int i = 0; i < num; i++) {
+ String[] command = br.readLine().split(" ");
+ switch (command[0]) {
+ case "push":
+ deq.add(Integer.parseInt(command[1]));
+ break;
+ case "pop":
+ sb.append(deq.isEmpty() ? "-1" : deq.poll());
+ sb.append("\n");
+ break;
+ case "size":
+ sb.append((deq.size()));
+ sb.append("\n");
+ break;
+ case "empty":
+ sb.append(deq.isEmpty() ? 1 : 0);
+ sb.append("\n");
+ break;
+ case "front":
+ sb.append(deq.isEmpty() ? "-1" : String.valueOf(deq.peekFirst()));
+ sb.append("\n");
+ break;
+ case "back":
+ sb.append(deq.isEmpty() ? -1 : deq.peekLast());
+ sb.append("\n");
+ break;
+ }
+
+ }
+ bw.write(String.valueOf(sb));
+ bw.flush();
+
+ bw.close();
+ br.close();
+ }
+
+}
diff --git a/week2/sumin/Backjoon_1935.java b/week2/sumin/Backjoon_1935.java
new file mode 100644
index 0000000..e3a08d8
--- /dev/null
+++ b/week2/sumin/Backjoon_1935.java
@@ -0,0 +1,61 @@
+package week2.sumin;
+
+import java.io.*;
+import java.util.*;
+
+public class Backjoon_1935 {
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ //피연산자의 개수
+ int N = Integer.parseInt(br.readLine());
+
+ //후위 표기식
+ char[] array = br.readLine().toCharArray();
+
+ Stack stack = new Stack<>();
+ //피연산자와 실제 숫자 관계 맺기
+ Map map = new HashMap<>();
+
+ //피연산자는 A부터 시작하고, N개의 피연산자를 갖는다.
+ char key = 'A';
+ for (int i = 0; i < N; i++) {
+ map.put(key, Double.parseDouble(br.readLine()));
+ key++;
+ }
+ //후위연산자의 개수만큼 반복한다.
+ for (int j = 0; j < array.length; j++) {
+ //대문자라면,그에 해당하는 값을 찾아서 스택에 넣는다.
+ //대문자 아스키 코드 값... 뭐지
+ if (array[j] >= 'A' && array[j] <= 'Z') {
+ stack.push(map.get(array[j]));
+ }
+
+ //연산자라면 스택에서 피연산자 2개의 값을 꺼내서 연산을 한다.
+ else {
+ double second = stack.pop();
+ double first = stack.pop();
+ switch (array[j]) {
+ case '+':
+ stack.push(first + second);
+ break;
+ case '-':
+ stack.push(first - second);
+ break;
+ case '*':
+ stack.push(first * second);
+ break;
+ case '/':
+ stack.push(first / second);
+ break;
+ }
+ }
+ }
+ bw.write(String.valueOf(String.format("%.2f",stack.pop())));
+
+ bw.flush();
+ bw.close();
+ br.close();
+ }
+}
diff --git a/week2/sumin/Backjoon_9012.java b/week2/sumin/Backjoon_9012.java
new file mode 100644
index 0000000..4fb390c
--- /dev/null
+++ b/week2/sumin/Backjoon_9012.java
@@ -0,0 +1,54 @@
+package week2.sumin;
+
+import java.io.*;
+import java.util.Stack;
+
+public class Backjoon_9012 {
+ public static void main(String[] args) throws IOException {
+ BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
+
+ int T=Integer.parseInt(br.readLine());
+
+ for(int i=0;istack=new Stack<>();
+
+ for(int i=0;i 중위 표기식
+
+* 예제) 4 7 2 + *
+ 1) 왼쪽부터 순차적으로 읽으면서 연산자를 찾는다.
+ 2) +연산자를 기준으로 앞쪽 두 개의 피연산자(7,2)를 더한다.
+ 3) 연산을 진행한 후 연산된 값을 적어둔다. 4 9 *
+ 4) 다시 1,2,3을 진행한다.
+ 1) 왼쪽부터 순차적으로 읽으면서 연산자를 찾는다.
+ 2) *연산자를 기준으로 앞쪽 두 개의 피연산자(4,9)를 곱한다.
+ 3) 연산을 진행한 후 연산된 값을 적어둔다 36
+
+
+
+#### 중위 표기식 -> 후위 표기식
+
+* 예제) 4 * 7+2
+ 1. 숫자일 때는 출력을 해준다.
+ 2. 연산자 일 때는
+ 1. 스택에 아무것도 없으면 -> 무조건 스택에 넣는다.
+ 2. 스택에 다른 연산자가 있으면 -> 넣고자하는 연산자가 스택에 있는 다른 연산자보다 우선순위가 높을 때까지 스택에 있는 다른 연산자를 출력하고, 해당 연산자를 스택에 넣는다.
+ 3. 연산자 우선순위 주의할 점
+ 1. ( : 무조건 스택에 넣는다.
+ 2. ) : 여는 괄호와 그 사이에 있는 연산을 처리해주고, 여는 괄호를 pop해준다.
\ No newline at end of file