프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📝 Language: Oracle

 

1
2
3
4
5
  SELECT ANIMAL_ID
    FROM ANIMAL_INS
   WHERE NAME IS NULL
ORDER BY ANIMAL_ID;
 
 

 

 

 

🔗 소스 코드

GitHub

 

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

Language: Java

 

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
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        int cnt = Integer.parseInt(br.readLine());
 
        Queue<Integer> queue = new LinkedList<>();
 
        StringBuffer sb = new StringBuffer();
 
        while (cnt-- > 0) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
 
            switch (st.nextToken()) {
            case "push":
                queue.add(Integer.parseInt(st.nextToken()));
                break;
            case "pop":
                if (!queue.isEmpty()) {
                    sb.append(queue.element() + "\n");
                    queue.remove();
                } else {
                    sb.append("-1\n");
                }
                break;
            case "size":
                sb.append(queue.size() + "\n");
                break;
            case "empty":
                sb.append((queue.isEmpty() ? "1" : "0"+ "\n");
                break;
            case "front":
                if (!queue.isEmpty()) {
                    sb.append(queue.peek() + "\n");
                } else {
                    sb.append("-1\n");
                }
                break;
            case "back":
                if (!queue.isEmpty()) {
                    sb.append(queue.toArray()[queue.size() - 1+ "\n");
                } else {
                    sb.append("-1\n");
                }
                break;
            }
 
        }
 
        bw.write(sb + "");
 
        bw.flush();
        bw.close();
 
    }
 
}
 
 

🤔 해설

1. case "back":

    - 가장 뒤에 들어있는 요소를 출력하기 위해 array로 변환

 

😮 이 외의 풀이

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
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        int N = Integer.parseInt(br.readLine());
 
        Queue<Integer> queue = new LinkedList<>();
 
        StringBuilder sb = new StringBuilder();
 
        int last = 0;
        while (N-- > 0) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
 
            switch (st.nextToken()) {
            case "push":
                last = Integer.parseInt(st.nextToken());
                queue.add(last);
                break;
            case "pop":
                sb.append(queue.isEmpty() ? -1 : queue.poll()).append("\n");
                break;
            case "size":
                sb.append(queue.size()).append("\n");
                break;
            case "empty":
                sb.append((queue.isEmpty() ? 1 : 0)).append("\n");
                break;
            case "front":
                sb.append(queue.isEmpty() ? -1 : queue.peek()).append("\n");
                break;
            case "back":
                sb.append(queue.isEmpty() ? -1 : last).append("\n");
                break;
            }
 
        }
 
        bw.write(sb + "");
 
        bw.flush();
        bw.close();
 
    }
 
}
 
 

1. int last = 0;

    - 최종값 출력을 위한 last 변수 선언

 

2. queue.poll()

    -  큐의 첫번째 요소 반환 및 삭제

 

 

 

🔗 소스 코드
GitHub

 

📚 참고 자료

 

[알고리즘] 백준 - 10845 ( 큐 ) / 자바

스택이랑 거의 동일한 문제 back만 잘 처리해 주면 된다.

velog.io

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📝 Language: Oracle

 

1
2
3
4
  SELECT * 
    FROM ANIMAL_INS 
ORDER BY ANIMAL_ID;
 
 

 

 

 

🔗 소스 코드

GitHub

 

 

28278번: 스택 2

첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다.

www.acmicpc.net

 

Language: Java

 

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
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
import java.util.StringTokenizer;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        int cnt = Integer.parseInt(br.readLine());
 
        Stack<Integer> stack = new Stack<>();
 
        StringBuffer sb = new StringBuffer();
 
        while (cnt-- > 0) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
 
            switch (st.nextToken()) {
            case "1":
                stack.push(Integer.parseInt(st.nextToken()));
                break;
            case "5":
                if (!stack.isEmpty()) {
                    sb.append(stack.lastElement() + "\n");
                } else {
                    sb.append("-1\n");
                }
                break;
            case "3":
                sb.append(stack.size() + "\n");
                break;
            case "4":
                sb.append((stack.isEmpty() ? "1" : "0"+ "\n");
                break;
            case "2":
                if (!stack.isEmpty()) {
                    sb.append(stack.lastElement() + "\n");
                    stack.pop();
                } else {
                    sb.append("-1\n");
                }
                break;
            }
 
        }
 
        bw.write(sb + "");
 
        bw.flush();
        bw.close();
 
    }
 
}
 
 

🤔 해설

10828번 스택 문제 풀이와 동일한 문제로, 자세한 풀이는 참고 자료 참조🤓

 

 

 

🔗 소스 코드
GitHub

 

📚 참고 자료

 

[BaekJoon] 10828번 스택 문제 풀이 (Success)

10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제

hj0216.tistory.com

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📝 Language: Oracle

 

1
2
3
4
5
  SELECT NAME, 
         DATETIME 
    FROM ANIMAL_INS 
ORDER BY ANIMAL_ID DESC;
 
 

 

 

 

🔗 소스 코드
GitHub