일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 격자판
- 최대 길이
- 뒤집은 소수
- Two Pointer
- 모든행과열대각선의합
- 누적 계산
- GitHub #Commit #BaekJoon
- 10991
- 인프런
- 자바
- 임시반장 정하기
- 10992
- 코테준비
- 투 포인터
- 큰 수 출력하기
- 배열
- 아스키코드
- 두 배열 합치기
- 점수계산
- 연속부분수열
- array
- 알고리즘
- 공통원소 구하기
- Pointer
- java
- 등수구하기
- ArrayList
- 백준
- 가장 짧은 문자거리
- 보이는 학생
- Today
- Total
목록[Java] 인프런 문제풀이/Stack, Queue (자료구조) (7)
ezhoon

📖 문제 첫 줄에 한 줄에 필수과목의 순서가 주어집니다. 모든 과목은 영문 대문자입니다. 두 번 째 줄부터 현수가 짠 수업설계가 주어집니다.(수업설계의 길이는 30이하이다) 첫 줄에 수업설계가 잘된 것이면 “YES", 잘못된 것이면 ”NO“를 출력합니다. ⚠️ 주의사항 CBA가 필수고 CBDAGE는 통과인 것처럼 CB를 듣고 다른 것을 듣고 A를 듣는 것은 괜찮고, 순서만 맞으면 된다. 아예 안듣는 경우도 생각해서 코딩을 해야 한다. ✍️ 이해 /** * 1. 필수과목 입력 및 본인 과목 입력 * 2. 필수과목 Queue queue 넣기 * 3. 본인 과목이랑 비교하기 위해서 queue.contains()사용 * 3-1. queue.contains(o) * 3-1-1. o != poll() true ->..

📖 문제 첫 줄에 N과 K입력 K번째는 N에서 제외 반복 후 마지막에 1명 남은 왕자 번호 출력 ⚠️ 주의사항 for문의 시작을 0부터가 아닌 1부터 시작으로 해야 합니다. 마지막에 1명 남았을 때는 answer에 값 전달해서 return 해야 합니다. ✍️ 이해 /** * 1. 첫 줄에 N(왕자의 수)과 K(제외된 왕자) 입력 * 2. Queue에 n번째까지 저장 * 3. Queue빈 값일 때까지 반복 * 3-1. Queue에 poll값 집어 넣기 * 3-2. Queue poll한 후 size == 1 -> answer에 poll 값 대입 * 4. return answer; */ ✏️ 풀이 import java.io.BufferedReader; import java.io.IOException; impo..

📖 문제 한 줄에 쇠막대기와 레이저의 배치를 나타내는 괄호 표현이 공백없이 입력 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고,레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않는다. ⚠️ 주의사항 stack으로 풀돼 닫힌 괄호과 전체 길이의 괄호인지 아니면 레이저 포인터 괄호인지 체크 해야 합니다. ✍️ 이해 /** * 1. 괄호로 이루..

📖 문제 첫 줄에 후위식연산식이 주어진다. (1~9의 숫자 +,-,*,/ 로만 이루어진다.) 더보기 왼쪽에서 부터 순차적으로 읽기 시작. 숫자는 일단 지나치고 연산자가 나오게 되면 연산자 앞 쪽 두 개의 숫자로 연산 진행 예제) 352+*9- 1. 숫자 순차적으로 읽어나감 2. 연산자 +를 만나서 5 + 2 = 7 3. 연산자 *를 만나서 3 * 7 = 21 4. 숫자 순차적으로 읽어나감 5. 연산자 -를 만나서 21 - 9 = 12 6. 연산 결과 = 12 ⚠️ 주의사항 Stack에 쌓일 때 pop에서 나온 값을 저장 후 계산 해야한다 A = stack.pop(); B = stack.pop(); -> B - A 이므로 나중에 나온 것을 앞에 둬야한다. ✍️ 이해 /** * 1. 첫 줄에 연산식 입력 *..

📖 문제 첫 줄에 문자열 입력 소괄호 사이에 존재하는 모든 문자 제거하고 남은 문자만 출력하시오 ⚠️ 주의사항 '(' 괄호가 여러 개 나오고서 ')' 괄호 나올 때를 생각해야 합니다. 괄호 사이가 아닌 경우에는 그대로 stack에 유지하거나 다른 변수에 저장해야 합니다. ✍️ 이해 이번엔 두 가지로 나눴습니다. 먼저 제가 처음에 풀었던 방법이지만 비추하는 방법입니다. 코드로 풀어보면 너무 길고, 직관적이지가 않습니다. /** * 1. 첫 줄에 문자열 str 생성 * 2. 소괄호 사이에 존재하는 모든 문자 제거이므로 "(" 입력 받으면 ")" 받을 때 까지 모든 문자 제거 * 2-1. "(" 다음 "(" 더 들어오고 ")" 여러 개 있는 경우도 생각하므로 * 2-2. "(" 받을 때 마다 cnt++ 하고 ..

📖 문제 첫 줄에 괄호로만 이루어진 문자열 입력 괄호가 입력되면 올바른 괄호면 "YES" 올바르지 않으면 "NO"를 출력 ⚠️ 주의사항 Stack 사용해서 풀어보겠습니다. 여는 괄호가 많은 경우 닫는 괄호가 많은 경우 두 가지 다 생각해야 합니다. ✍️ 이해 /** * 1. 첫 줄에 괄호 문자열 입력 * 2. "(" 일 경우 push ")" 일 경우 pop * 2.1 ")" 인데 stack이 empty일 경우 answer = NO, break; * 3. "(" 즉 여는 괄호가 많은 경우도 체크 해야 함 * 4. return answer */ 위 그림처럼 "(()(()))(()" 입력된 경우 stack에 쌓이고 빠지는 과정입니다. ✏️ 풀이 import java.io.BufferedReader; impor..