우규이인우윀
Eager To Learn 🌌
우규이인우윀
전체 방문자
였늘
μ–΄μ œ

λΈ”λ‘œκ·Έ 메뉴

  • 🏑 ν™ˆ
  • πŸš€ κΉƒν—ˆλΈŒ
  • β›… νƒœκ·Έ ν΄λΌμš°λ“œ
  • λΆ„λ₯˜ 전체보기 (217)
    • πŸ‘¨πŸ»‍πŸ’» PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm 기법 (1)
      • 바킹독 (21)
    • λΈ”λ‘œκ·Έ 이사 (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • 자료ꡬ쑰 (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • κ°œλ°œμ„œμ  (15)
      • 가상 λ©΄μ ‘ μ‚¬λ‘€λ‘œ λ°°μš°λŠ” λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œ 섀계 기초 (1)
      • 였브젝트 - 쑰영호 (7)
      • μΉœμ ˆν•œ SQL νŠœλ‹ (7)
    • 회고 (2)
hELLO Β· Designed By μ •μƒμš°.
우규이인우윀

Eager To Learn 🌌

πŸ‘¨πŸ»‍πŸ’» PS/JAVA

[JAVA] λ°±μ€€ 10866번 【덱】

2022. 10. 11. 18:08


 

 

[JAVA] λ°±μ€€ 10845번 【큐】

이번 λ¬Έμ œλŠ”, 문제 이름 κ·ΈλŒ€λ‘œ 큐λ₯Ό κ΅¬ν˜„ν•˜λŠ” λ¬Έμ œμ΄λ‹€. μ €λ²ˆμ—λŠ” μŠ€νƒμ˜ κΈ°λŠ₯을 직접 κ΅¬ν˜„ν•˜μ˜€λŠ”λ°, 큐와 μŠ€νƒμ˜ 차이점은 νλŠ” 데이터가 λ¨Όμ € λ“€μ–΄μ˜¨ μˆœμ„œλŒ€λ‘œ μΆ”μΆœμ΄ λœλ‹€λŠ” 것이닀. μŠ€νƒμ˜

yinq.tistory.com

 

 

[JAVA] λ°±μ€€ 10828번 γ€μŠ€νƒγ€‘

λ°±μ—”λ“œ μŠ€μΏ¨μ—μ„œ ν•œλ²ˆ ν–ˆμ—ˆλ˜, μŠ€νƒ κ΅¬ν˜„ν•˜κΈ° λ¬Έμ œμ˜€λ‹€. μŠ€νƒμ΄ μ–΄λ–€ 데이터 ꡬ쑰인지 μ•Œλ©΄, 더 μ‰½κ²Œ ν’€ 수 μžˆμ§€λ§Œ, λͺ°λΌλ„ μœ„ μ„€λͺ…을 보고 μœ„ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ” λ§€μ„œλ“œλ₯Ό λ§Œλ“€λ©΄ μΆ©λΆ„νžˆ ν•΄κ²°ν• 

yinq.tistory.com

 

큐와 μŠ€νƒ 문제λ₯Ό ν’€μ—ˆλ‹€λ©΄ 그리 μ–΄λ €μš΄ λ¬Έμ œκ°€ μ•„λ‹ˆλ‹€.

 

λ‚˜λŠ” 20002 크기λ₯Ό κ°€μ§„ int 배열을 μ„ μ–Έν•˜μ˜€κ³ , first index 와 last index λ₯Ό 10000으둜 μ‹œμž‘ν•˜μ˜€λ‹€.

 

first index의 경우 push_front 의 κ²½μš°μ—λŠ” 인덱슀λ₯Ό μ „μœ„μ—°μ‚°μžλ₯Ό ν†΅ν•΄μ„œ λ¨Όμ € κ°μ†Œ μ‹œμΌ°κ³ , 데이터λ₯Ό 가리킀고 μžˆλŠ” 인덱슀둜 μ‚¬μš©ν•˜μ˜€κ³ 

 

last index의 경우 push_back 의 κ²½μš°μ—λŠ” 인덱슀λ₯Ό ν›„μœ„ μ—°μ‚°μžλ‘œ μ¦κ°€μ‹œμΌœ, 데이터λ₯Ό μ±„μšΈ κ³³(데이터가 μ•ˆμ±„μ›Œμ§„ κ³³)을 가리킀도둝 μ„€μ •ν•˜μ˜€λ‹€.

 

pop의 κ²½μš°μ—λŠ” λ°˜λŒ€λ‘œ first indexλŠ” 데이터λ₯Ό 가리킀고 있기 λ•Œλ¬Έμ—, ν›„μœ„μ—°μ‚°μžλ‘œ 데이터λ₯Ό λ¨Όμ € 보여쀀 ν›„ μ¦κ°€μ‹œμΌ°κ³ 

last indexλŠ” μ „μœ„μ—°μ‚°μžλ‘œ λ¨Όμ € κ°μ†Œμ‹œν‚¨λ‹€μŒ 데이터λ₯Ό 보여쀄 수 μžˆλ„λ‘ κ΅¬ν˜„ν•˜μ˜€λ‹€.

 

λ‹€λ₯Έ λ©”μ„œλ“œλ“€μ€ 큐와 μŠ€νƒκ³Ό 큰 차이가 μ—†λ‹€~

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    static int first = 10000;
    static int last = 10000;
    static int[] array = new int[20002];

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.valueOf(br.readLine());
        for (int i = 1; i <= N; i++) {
            String[] input = br.readLine().split(" ");
            if (input[0].equals("push_back")) {
                push_back(Integer.valueOf(input[1]));
            } else if (input[0].equals("push_front")) {
                push_front(Integer.valueOf(input[1]));
            } else if (input[0].equals("pop_back")) {
                pop_back();
            } else if (input[0].equals("pop_front")) {
                pop_front();
            } else if (input[0].equals("size")) {
                size();
            } else if (input[0].equals("empty")) {
                empty();
            } else if (input[0].equals("front")) {
                front();
            } else if (input[0].equals("back")) {
                back();
            }
        }
    }

    static void push_front(int X) {//push_front X: μ •μˆ˜ Xλ₯Ό 덱의 μ•žμ— λ„£λŠ”λ‹€.
        array[--first] = X;
    }

    static void push_back(int X) {//push_back X: μ •μˆ˜ Xλ₯Ό 덱의 뒀에 λ„£λŠ”λ‹€.
        array[last++] = X;
    }

    static void pop_front() {//pop_front: 덱의 κ°€μž₯ μ•žμ— μžˆλŠ” 수λ₯Ό λΉΌκ³ , κ·Έ 수λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½, 덱에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
        if (last - first == 0) {
            System.out.println(-1);
        } else {
            System.out.println(array[first++]);
        }
    }

    static void pop_back() {//pop_back: 덱의 κ°€μž₯ 뒀에 μžˆλŠ” 수λ₯Ό λΉΌκ³ , κ·Έ 수λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½, 덱에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
        if (last - first == 0) {
            System.out.println(-1);
        } else {
            System.out.println(array[--last]);
        }
    }

    static void size() {//size: 덱에 λ“€μ–΄μžˆλŠ” μ •μˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.
        System.out.println(last - first);
    }

    static void empty() {//empty: 덱이 λΉ„μ–΄μžˆμœΌλ©΄ 1을, μ•„λ‹ˆλ©΄ 0을 좜λ ₯ν•œλ‹€.
        if (last - first == 0) {
            System.out.println(1);
        } else {
            System.out.println(0);
        }
    }

    static void front() {//front: 덱의 κ°€μž₯ μ•žμ— μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 덱에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
        if (last - first == 0) {
            System.out.println(-1);
        } else {
            System.out.println(array[first]);
        }
    }

    static void back() { //back: 덱의 κ°€μž₯ 뒀에 μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 덱에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
        if (last - first == 0) {
            System.out.println(-1);
        } else {
            System.out.println(array[last - 1]);
        }
    }
}
    'πŸ‘¨πŸ»‍πŸ’» PS/JAVA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [JAVA] λ°±μ€€ 10809번 γ€μ•ŒνŒŒλ²³ 찾기】
    • [JAVA] λ°±μ€€ 10808번 γ€μ•ŒνŒŒλ²³ κ°œμˆ˜γ€‘
    • [JAVA] λ°±μ€€ 10845번 【큐】
    • [JAVA] λ°±μ€€ 10799번 γ€μ‡ λ§‰λŒ€κΈ°γ€‘
    우규이인우윀
    우규이인우윀
    개발자 κΏˆλ‚˜λ¬΄

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”