일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코테
- dynamic programming
- bit manipulation
- sorting
- string
- Binary Search
- Matrix
- Counting
- Binary Tree
- Data Structure
- java
- two pointers
- Stack
- array
- Tree
- greedy
- SQL
- 자바
- Method
- 코딩테스트
- 파이썬
- Class
- geometry
- hash table
- implement
- simulation
- Number Theory
- 구현
- database
- Math
- Today
- Total
목록Stack (28)
코린이의 소소한 공부노트
1. 입력 - 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) - 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다. - 정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할 수 있다. 2. 출력 - 재민이가 최종적으로 적어 낸 수의 합을 출력한다. 최종적으로 적어낸 수의 합은 231-1보다 작거나 같은 정수이다. 3. 코드 import java.util.*; import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br ..
정수를 저장하는 스택을 구현하고 다음 5가지 명령이 주어진다. - push X: 정수 X를 스택에 넣는 연산이다. - pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. - size: 스택에 들어있는 정수의 개수를 출력한다. - empty: 스택이 비어있으면 1, 아니면 0을 출력한다. - top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 1. 입력 - 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. - 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. - 문제에 나와있..
1. Input 1) String[] logs - 폴더 이동에 대한 연산자가 담겨 있다. 2. Output 1) 아래 규칙에 따라 폴더를 이동하고 난 후, 해당 위치에서 main까지 가는데 필요한 최소 이동횟수를 반환 - ../ : 상위 폴더로 이동. 이미 main이라면 움직이지 않는다. - ./ : 이동하지 않는다. - x/ : 하위 폴더 중 이름이 x인 폴더로 이동한다. 이 연산이 시행될 때 폴더 x는 반드시 존재한다. 3. Constraint 1) 1
1. Input 1) String s 2. Output 1) 아래 단계를 모두 끝낸 후의 s를 반환 - s의 별을 1개 고른다. - 별의 왼쪽에 있는 별이 아닌 문자중 고른 것과 가장 가까운 문자를 없앤다. - 고른 별을 없앤다. - s에 별이 없을 때까지 반복한다. 3. Constraint 1) 1
1. Input 1) String s 2. Output 1) 다음과 같은 규칙으로 문자열을 지워나갈 때, 최종 문자열을 반환 - 인접한 2개의 문자가 같으면 지운다. - 더이상 지울 문자가 없을 때까지 반복한다. 3. Constraint 1) 1 Output: "ay" 5. Code 1) 첫 코드(2023/04/04) for(int i=0 ; i
1. Input 1) String[] operations 2. Output 1) 다음 규칙에 따라 계산한 결과를 int로 반환 // operations[i]가 - 정수: 해당 점수를 기록한다. - +: 이전의 두 점수를 더한 값을 기록한다. - C: 마지막 점수 기록을 없앤다. - D: 마지막 점수의 2배를 기록한다. 3. Constraint 1) 1
1. 개념정리 1) 한쪽에서만 데이터 삽입과 삭제가 가능한 구조 2) LIFO(Last In First Out, 마지막 삽입 데이터가 먼저 삭제됨) 3) java.util 패키지에 Stack 클래스가 있다. 2. 구현 코드 class ArrayStack{ // int[]로 구현하는 스택 protected final int defCap = 10; // 스택의 용량 protected int[] stack; // 스택의 요소를 담을 배열 protected int topIndex = -1; // 스택의 가장 마지막 인덱스 public ArrayStack() { // 기본 생성자 stack = new int[defCap]; } public ArrayStack(int maxSize) { // 스택의 크기를 지정한 ..
1. Input 1) int[] nums 2. Output 1) nums가 순환 배열이라고 할 때, i번째 이후의 요소들 중 nums[i]보다 큰 첫 번째 수를 차례대로 담은 배열을 반환 2) 그런 수를 찾지 못했다면 -1을 저장 3. Constraint 1) 1
1. Input 1) int[] nums1 2) int[] nums2 2. Output 1) nums1[i]의 요소를 nums2에서 찾은 다음, 해당 요소의 오른쪽에 있는 nums2의 요소 중 nums1[i]보다 큰 첫 번째 요소를 차례대로 담은 int[] - 만약 nums2에서 nums1[i]보다 큰 요소를 찾지 못했다면 -1을 저장한다. 3. Constraint 4. Example Input: nums1 = [4,1,2], nums2 = [1,3,4,2] -> Output: [-1,3,-1] 설명: - nums1[0]==4 -> nums2[2]==4 -> nums2에서 index>2 인 요소 중 4보다 큰 요소가 없으므로 -1을 저장 - nums1[1]==1 -> nums2[0]==1 -> nums2..