ν°μ€ν 리 λ·°
λ¬Έμ
μ μλ₯Ό μ μ₯νλ νλ₯Ό ꡬνν λ€μ, μ λ ₯μΌλ‘ μ£Όμ΄μ§λ λͺ λ Ήμ μ²λ¦¬νλ νλ‘κ·Έλ¨μ μμ±νμμ€.
λͺ λ Ήμ μ΄ μ¬μ― κ°μ§μ΄λ€.
- push X: μ μ Xλ₯Ό νμ λ£λ μ°μ°μ΄λ€.
- pop: νμμ κ°μ₯ μμ μλ μ μλ₯Ό λΉΌκ³ , κ·Έ μλ₯Ό μΆλ ₯νλ€. λ§μ½ νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
- size: νμ λ€μ΄μλ μ μμ κ°μλ₯Ό μΆλ ₯νλ€.
- empty: νκ° λΉμ΄μμΌλ©΄ 1, μλλ©΄ 0μ μΆλ ₯νλ€.
- front: νμ κ°μ₯ μμ μλ μ μλ₯Ό μΆλ ₯νλ€. λ§μ½ νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
- back: νμ κ°μ₯ λ€μ μλ μ μλ₯Ό μΆλ ₯νλ€. λ§μ½ νμ λ€μ΄μλ μ μκ° μλ κ²½μ°μλ -1μ μΆλ ₯νλ€.
10845λ²: ν
첫째 μ€μ μ£Όμ΄μ§λ λͺ λ Ήμ μ N (1 ≤ N ≤ 10,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° Nκ°μ μ€μλ λͺ λ Ήμ΄ νλμ© μ£Όμ΄μ§λ€. μ£Όμ΄μ§λ μ μλ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , 100,000λ³΄λ€ μκ±°λ κ°λ€. λ¬Έμ μ λμμμ§
www.acmicpc.net
μ λ ₯
첫째 μ€μ μ£Όμ΄μ§λ λͺ λ Ήμ μ N (1 ≤ N ≤ 10,000)μ΄ μ£Όμ΄μ§λ€. λμ§Έ μ€λΆν° Nκ°μ μ€μλ λͺ λ Ήμ΄ νλμ© μ£Όμ΄μ§λ€. μ£Όμ΄μ§λ μ μλ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , 100,000λ³΄λ€ μκ±°λ κ°λ€. λ¬Έμ μ λμμμ§ μμ λͺ λ Ήμ΄ μ£Όμ΄μ§λ κ²½μ°λ μλ€.
μΆλ ₯
μΆλ ₯ν΄μΌνλ λͺ λ Ήμ΄ μ£Όμ΄μ§ λλ§λ€, ν μ€μ νλμ© μΆλ ₯νλ€.

λ¬Έμ νμ΄
λ¨μν νλ₯Ό ꡬνν΄λ³΄λ λ¬Έμ μ λλ€. νλ FIFO λ°©μμ λ°λ₯΄λ μλ£κ΅¬μ‘°λ‘ μ μ°©μ μ€μκΈ°λ₯Όλ₯Ό μκ°νμλ©΄ λ©λλ€!
(Queueμ κ°λ μ΄ν·κ°λ¦¬μ λ€λ©΄ μ κ° μ€λͺ ν κΈ μ°Έκ³ ν΄μ£ΌμΈμ~)
Swiftμμλ μλ£κ΅¬μ‘°λ₯Ό λΌμ΄λΈλ¬λ¦¬λ‘ μ§μν΄μ£Όμ§ μμ§λ§ C++μμλ μ§μμ ν΄μ£ΌκΈ° λλ¬ΈμSwiftμ C++, λ κ°μ μΈμ΄λ‘ ꡬνμ ν΄λ³΄μμ΅λλ€.
Queue λ°°μ΄μ dequeue κ³Όμ μμ μ€λ²ν€λκ° λ°μνμ¬ μκ° λ³΅μ‘λκ° O(n)μ΄ λ μ μκΈ° λλ¬Έμ
μ²μ μΈλ±μ€λ₯Ό λ³μλ‘ μ μ₯νμ¬ μ€μ λ°μ΄ν°λ₯Ό μμ νμ§ μκ³ ν΄λΉ λ³μλ₯Ό ν΅ν΄ μ²μ λ°μ΄ν°λ₯Ό κ΄λ¦¬νμμ΅λλ€.
νμ΄ μμ
1. Swiftμ κ²½μ° Queue λ°°μ΄κ³Ό μ²μ μΈλ±μ€λ₯Ό μ μ₯ν λ³μλ₯Ό λ§λ€μ΄μ£Όκ³ , C++μ κ²½μ° λΌμ΄λΈλ¬λ¦¬μμ μ§μν΄μ£Όλ Queueλ₯Ό μ μν΄μ€λλ€.
2. λ¬Έμ μμ μꡬνλ κ°μ 쑰건μ λ§κ² μ½μμ μΆλ ₯ν΄μ€λλ€.
νμ΄ μ½λ
< Swift>
// Swift
var queue = [Int]()
var firstIndex = 0 // μ²μ λ°μ΄ν°λ₯Ό κ°λ¦¬ν€λ μΈλ±μ€
var size = 0 // λ°μ΄ν° κ°μ
let n = Int(readLine()!)!
for _ in 1...n {
let cmd = readLine()!
switch cmd {
case "pop":
if size != 0 {
print(queue[firstIndex])
firstIndex += 1
size -= 1
} else {
print(-1)
}
case "size":
print(size)
case "empty":
size == 0 ? print(1) : print(0)
case "front":
size == 0 ? print(-1) : print(queue[firstIndex])
case "back":
size == 0 ? print(-1) : print(queue.last!) // κ°μ₯ λ§μ§λ§μ λ€μ΄μ¨ λ°μ΄ν°
default:
let arr = cmd.split(separator: " ")
let num = Int(String(arr.last!))!
queue.append(num)
size += 1
}
}
< C++>
// C++
#include <bits/stdc++.h>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
queue<int> Q;
int n;
cin >> n;
while(n--){
string str;
cin >> str;
if(str=="push"){
int n;
cin >> n;
Q.push(n);
}
else if(str=="pop"){
if(Q.empty()) cout << -1 << '\n';
else{
cout << Q.front() << '\n';
Q.pop();
}
}
else if(str=="size") cout << Q.size() << '\n';
else if(str=="empty") cout << Q.empty() << '\n'; // trueλ 1, falseλ 0
else if(str=="front"){
if(Q.empty()) cout << -1 << '\n';
else{
cout << Q.front() << '\n';
}
}
else{ // back
if(Q.empty()) cout << -1 << '\n';
else{
cout << Q.back() << '\n';
}
}
}
}
λ§λ¬΄λ¦¬
ν΄λΉ λ¬Έμ μμλ κ΅³μ΄ μ€λ²ν€λ λ¬Έμ λ₯Ό μ²λ¦¬ν΄μ£Όμ§ μμλ λ¬Έμ λ ν리μ§λ§,νμμ κ°μ₯ ν° λ¬Έμ μν©μ΄λΌκ³ μκ°λλ μ€λ²ν€λλ₯Ό ν΄κ²°νκΈ° μν΄ μΈλ±μ€ λ³μλ₯Ό νμ©νμ¬ μ½λλ₯Ό μμ±ν΄λ³΄μμ΅λλ€.
'Coding Test > BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] 10799λ² - μ λ§λκΈ° (Swift, C++) (0) | 2024.02.26 |
---|---|
[BOJ] 4949λ² - κ· νμ‘ν μΈμ (Swift, C++) (0) | 2024.02.25 |
[BOJ] 10773λ² - μ λ‘ (Swift, C++) (0) | 2024.02.22 |
[BOJ] 5397λ² - ν€λ‘κ±° (Swift, C++) (0) | 2024.02.21 |
[BOJ] 10828λ² - μ€ν (Swift, C++) (1) | 2024.02.20 |
- C++
- pageViewController
- Swift
- κ³΅κ° λ³΅μ‘λ
- Container View Controller
- λ²μ©κ³ μ μλ³
- Anyobject
- μννΈμ€ν¬
- μ€ν
- 10808
- root view controller
- ν
- κ΄νΈμ κ°
- tipkit
- μλ£ κ΅¬μ‘°
- μ νμμΉ΄λ°λ―Έ
- BOJ
- κ°λ°μ
- κ·λλΌλ―Έ μμ΄
- νκ³
- μμ΄ λ΄μ€
- remainder
- 24λ νκ³
- κ·λλΌλ―Έ μμ΄
- 2024λ λͺ©ν
- λ¨μΌ μ°κ²° 리μ€νΈ
- 2023λ νκ³
- containerView
- μμ΄ κ³΅λΆ
- μλ°©ν₯ μ°κ²° 리μ€νΈ
- Total
- Today
- Yesterday