article thumbnail image
Published 2022. 11. 12. 04:28

# 자료ꡬ쑰

18258. 큐2

μ •μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” 큐λ₯Ό κ΅¬ν˜„ν•œ λ‹€μŒ, μž…λ ₯으둜 μ£Όμ–΄μ§€λŠ” λͺ…령을 μ²˜λ¦¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

λͺ…령은 총 μ—¬μ„― 가지이닀.

  • push X: μ •μˆ˜ Xλ₯Ό 큐에 λ„£λŠ” 연산이닀.
  • pop: νμ—μ„œ κ°€μž₯ μ•žμ— μžˆλŠ” μ •μˆ˜λ₯Ό λΉΌκ³ , κ·Έ 수λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
  • size: 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.
  • empty: 큐가 λΉ„μ–΄μžˆμœΌλ©΄ 1, μ•„λ‹ˆλ©΄ 0을 좜λ ₯ν•œλ‹€.
  • front: 큐의 κ°€μž₯ μ•žμ— μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
  • back: 큐의 κ°€μž₯ 뒀에 μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.

 

μž…λ ₯

첫째 쀄에 μ£Όμ–΄μ§€λŠ” λͺ…λ Ήμ˜ 수 N (1 ≤ N ≤ 2,000,000)이 μ£Όμ–΄μ§„λ‹€. λ‘˜μ§Έ 쀄뢀터 N개의 μ€„μ—λŠ” λͺ…령이 ν•˜λ‚˜μ”© μ£Όμ–΄μ§„λ‹€. μ£Όμ–΄μ§€λŠ” μ •μˆ˜λŠ” 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , 100,000보닀 μž‘κ±°λ‚˜ κ°™λ‹€. λ¬Έμ œμ— λ‚˜μ™€μžˆμ§€ μ•Šμ€ λͺ…령이 μ£Όμ–΄μ§€λŠ” κ²½μš°λŠ” μ—†λ‹€.

 

좜λ ₯

좜λ ₯ν•΄μ•Όν•˜λŠ” λͺ…령이 μ£Όμ–΄μ§ˆ λ•Œλ§ˆλ‹€, ν•œ 쀄에 ν•˜λ‚˜μ”© 좜λ ₯ν•œλ‹€.

 

예제 μž…λ ₯1

15
push 1
push 2
front
back
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
front

예제 좜λ ₯1

1
2
2
0
1
2
-1
0
1
-1
0
3

 

 

풀이

이전에 μ“΄ 큐 κ΄€λ ¨ μ½”λ“œμ™€ λΉ„μŠ·ν•˜μ§€λ§Œ κ·ΈλŒ€λ‘œ ν•˜λ©΄ μ‹œκ°„ μ΄ˆκ³Όκ°€ λ‚˜μ„œ 큐의 크기λ₯Ό λŠ˜λ Έλ‹€.

λ˜ν•œ front λͺ…령어일 λ•Œ 큐가 λΉ„μ–΄μžˆλŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•˜κ³  κ·Έ μ™Έμ˜ κ²½μš°μ—λŠ” κ°€μž₯ μ•žμ˜ μ›μ†Œλ₯Ό 좜λ ₯ν•˜λ„λ‘ if else 문을 μž‘μ„±ν•΄μ£Όμ—ˆλ‹€. λ§ˆμ°¬κ°€μ§€λ‘œ back λͺ…령어일 λ•Œ 큐가 λΉ„μ–΄μžˆλŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•˜κ³ , κ·Έ μ™Έμ˜ κ²½μš°μ—λŠ” κ°€μž₯ λ’€μ˜ μ›μ†Œλ₯Ό 좜λ ₯ν•˜λ„λ‘ μž‘μ„±ν•΄μ£Όμ—ˆλ‹€.

main ν•¨μˆ˜μ—μ„œλŠ” strcmpν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ λ¬Έμžμ—΄μ„ λΉ„κ΅ν•΄μ„œ κ·Έ 값이 1인 경우 그에 λ§žλŠ” ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜λ„λ‘ ν–ˆλŠ”λ°, μ΄λ•Œ λ°˜ν™˜κ°’μ΄ 1일 λ•Œ μ‹€ν–‰λ˜κΈ° μœ„ν•΄ !도 μ•žμ— λΆ™μ—¬μ£Όμ—ˆλ‹€.

#include <stdio.h>
#include <string.h>

int queue[2000001];
int front = 0, rear = -1;

void push(int data){
    queue[++rear] = x;
}
void pop(void){
    if(rear - front + 1 == 0)
        printf("%d\n", -1);
    else
        printf("%d\n", queue[front++]);
}
void size(void){
    printf("%d\n", rear-front+1);
}
void empty(void){
    if(rear - front + 1 != 0)
        printf("%d\n", 0);
    else
        printf("%d\n", 1);
}
int main(void){
    int n, i, data;
    char c[6];
    scanf("%d", &n);
    for(i = 0; i < n; i++){
        scanf("%s", c); // λͺ…λ Ή μž…λ ₯
        if(!strcmp(c, "push")){
            scanf("%d", &data);
            push(x);
        }else if(!strcmp(c, "pop"))
            pop();
        else if(!strcmp(c, "size"))
            size();
        else if(!strcmp(c, "empty"))
            empty();
        else if(!strcmp(c, "front")){
            if(rear - front + 1 == 0)
                printf("%d\n", -1);
            else
                printf("%d\n", queue[front]);
        }
        else if(!strcmp(c, "back")){
            if(rear - front + 1 == 0)
                printf("%d\n", -1);
            else
                printf("%d\n", queue[rear]);
        }
    }
    return 0;
}

 

'λ°±μ€€ > C' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[C] λ°±μ€€ 10845번  (1) 2022.11.12
[C] λ°±μ€€ 10828번  (0) 2022.11.11
[C] λ°±μ€€ 1065번  (0) 2022.11.11
[C] λ°±μ€€ 2164번  (0) 2022.05.24
[C] λ°±μ€€_ 7568번  (0) 2022.05.16
λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€!