โค๏ธ Problem
- ๋ฌธ์
์ซ์๋ค์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋๋ค. ๋ฌธ์์ด์ ์๋ ์ซ์๋ฅผ ์ฐจ๋ก๋๋ก ๋ํ๋ ค๊ณ ํฉ๋๋ค. ์ด ๋ “Z”๊ฐ ๋์ค๋ฉด ๋ฐ๋ก ์ ์ ๋ํ๋ ์ซ์๋ฅผ ๋บ๋ค๋ ๋ป์ ๋๋ค. ์ซ์์ “Z”๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ง ๋, ๋จธ์ฑ์ด๊ฐ ๊ตฌํ ๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
- ์ ํ ์ฌํญ
- 0 < s์ ๊ธธ์ด < 1,000
- -1,000 < s์ ์์ ์ค ์ซ์ < 1,000
- s๋ ์ซ์, "Z", ๊ณต๋ฐฑ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- s์ ์๋ ์ซ์์ "Z"๋ ์๋ก ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
- ์ฐ์๋ ๊ณต๋ฐฑ์ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- 0์ ์ ์ธํ๊ณ ๋ 0์ผ๋ก ์์ํ๋ ์ซ์๋ ์์ต๋๋ค.
- s์ ์์๊ณผ ๋์๋ ๊ณต๋ฐฑ์ด ์์ต๋๋ค.
- ๋ชจ๋ ์ซ์๋ฅผ ์ง์ฐ๋ ๊ฒฝ์ฐ๋ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- ์ง์ธ ์ซ์๊ฐ ์๋ ์ํ์์ "Z"๋ ๋ฌด์ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ & ์ค๋ช
no | s | result |
1 | "1 2 Z 3" | 4 |
2 | "10 20 30 40" | 100 |
3 | "10 Z 20 Z 1" | 1 |
- ๋ณธ๋ฌธ๊ณผ ๋์ผํฉ๋๋ค.
- 10 + 20 + 30 + 40 = 100์ return ํฉ๋๋ค.
- "10 Z 20 Z 1"์์ 10 ๋ค์ Z, 20 ๋ค์ Z๋ก 10, 20์ด ์ง์์ง๊ณ 1๋ง ๋ํ์ฌ 1์ return ํฉ๋๋ค.
๐ Solution
ํ์ด
import java.util.Stack;
class Solution {
public int solution(String s) {
String[] str = s.split(" ");
Stack<String> st = new Stack<>();
int sum = 0;
for(int i=0; i<str.length; i++) {
if(!str[i].equals("Z")) {
st.push(str[i]);
} else {
st.pop();
}
}
while (!st.isEmpty()) {
sum += Integer.parseInt(st.pop());
}
return sum;
}
}
์ฒ๋ฆฌ์๋๋ฅผ ๋ ๋น ๋ฅด๊ฒ ํ ์๋ ์์๊น
๐ Comment
์ด ๋ฌธ์ ๋ ํต๊ณผ๊น์ง ์ ๋ง ์ค๋๊ฑธ๋ ธ๋ ๋ฌธ์ .
์ฒ์์๋ ๋ฐฐ์ด๋ก ํด๊ฒฐํ๋ ค๊ณ ํด๋ดค๋๋ฐ ์ฐ๋ฌ์์ "Z"๊ฐ ๋์ค๋ ๊ฒฝ์ฐ๋ฅผ ๋์ ํ ํด๊ฒฐํ ์ ์์๋ค.
if๋ฌธ ์์ While๋ฌธ์ ์จ์ "Z"๊ฐ ์ฐ๋ฌ์ ๋์ค๋ ์ํฉ์ ๋๋นํ๋ ค๊ณ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์งฐ๋ค.
class Solution {
public int solution(String s) {
String[] str = s.split(" ");
int sum = 0;
for(int i=0; i<str.length; i++) {
if(str[i].equals("Z")) {
int ctrl = i-1;
String temp = "";
if(str[ctrl].equals("Z")) {
while (str[ctrl].equals("Z")) {
temp = str[ctrl-1];
ctrl--;
}
sum -= Integer.parseInt(temp);
} else {
sum -= Integer.parseInt(str[i-1]);
}
} else {
sum += Integer.parseInt(str[i]);
}
}
return sum;
}
}
๊ฒฐ๊ณผ๋ ๋ณด๋ค์ํผ ํ
์คํธ 7์์ ์คํจ๊ฐ ๋์๋ค.
์ด๋ป๊ฒ ํด๊ฒฐํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ์ด์ ๋ง๋งํ๋ ์ค์ "์ปจํธ๋กค ์ ํธ"์ ์ปจ์ ์ ๋ค์ ์๊ฐํด ๋ณด์๋ค.
"์ปจํธ๋กค ์ ํธ"์ ์ ์๋ ์ง์ ์ ์ํํ ํ๋์ ์ทจ์ํ๋ ๊ฒ.
์ฆ, ์ปจํธ๋กค ์ ํธ๋ฅผ ์ฐ์์ผ๋ก ๋๋ฅด๋ฉด ์ง์ ์ ๋ํด์ก๋ ๊ฐ์ด ํ๋์ฉ ์ทจ์๋์ด์ผํ๋ ๊ฒ์ด์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ง์ ๊ฐ์ ์ธ๋ฑ์ค ์์ด ๋บ ์ ์๋ ํํ๋ ์์๊น? ๊ณ ๋ฏผ ํ๋ ์ค์ ๋ฌธ๋ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ๊ณต๋ถํ๋ฉด์ ๋ฐฐ์ ๋ ํ์ ์ ์ถ์ด๋ผ๋ ๊ฐ๋ ์ด ๋นก ๋ ์ฌ๋๋ค. ๋๋ถ์ Stack์ ์ฌ์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค๐คฉ
๐ค Concept
1. Stack
- ๋ฐ์ดํฐ๊ฐ ํ๋์ฉ ์์ด๋ ํํ์ ์๋ฃ๊ตฌ์กฐ
- ๊ฐ์ฅ ๋ง์ง๋ง์ ์ฝ์ ๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ํธ์ถ๋จ (ํ์ ์ ์ถ, Last In First Out)
- ๊ฐ์ ๊ตฌ์กฐ์ ํฌ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ํด์ง ๋ฐฉํฅ์ผ๋ก๋ง ์์ ์ ์์
- top์ผ๋ก ์ค์ ํ ๊ณณ์ ํตํด์๋ง ์ ๊ทผ
- Stack ๊ด๋ จ ๋ฉ์๋
- Stack ๊ฐ ์ถ๊ฐ == stack.push(VALUE);
- Stack ๊ฐ ์ ๊ฑฐ == stack.pop();
- Stack ์ด๊ธฐํ == stack.clear();
- ์ต์๋จ ๊ฐ ์ถ๋ ฅ == stack.peek();
- Stack์ด ๋น์ด์๋์ง ์ฒดํฌ == stack.empty();
- Stack์ ํน์ ๊ฐ์ด ์๋์ง ์ฒดํฌ == stack.contains(VALUE);
- Stack ๊ด๋ จ ๊ฐ๋
- stack underflow: ๋น ์คํ ์์ ๋ฐ์ดํฐ ์ถ์ถ ์ ๋ฐ์
- stack overflow: ์คํ์ด ๋์น๋ ๊ฒฝ์ฐ ๋ฐ์
- ์ฉ๋ก: ๋ค๋ก๊ฐ๊ธฐ ๊ธฐ๋ฅ, ์คํ์ทจ์ ๊ธฐ๋ฅ ๋ฑ
2. Queue
- ๋ฐ์ดํฐ๊ฐ ์์๋๋ก ์ฒ๋ฆฌ๋๋ ์๋ฃ ๊ตฌ์กฐ
- ํ์ชฝ ๋์ front (์ญ์ ๋ง ์ํ), ๋ค๋ฅธ ์ชฝ ๋์ rear(์ฝ์ ๋ง ์ํ)
- front์์ ๋ฐ์ํ๋ ์ญ์ ์ฐ์ฐ == deQueue
- rear์์ ๋ฐ์ํ๋ ์ฝ์ ์ฐ์ฐ == enQueue
- ๊ฐ์ฅ ๋จผ์ ์ฝ์ ๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ํธ์ถ๋จ (์ ์ ์ ์ถ, First In First Out)
- ์ปดํจํฐ ๋ฒํผ์์ ์ฌ์ฉ (์์๋๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํจ)
- Queue๊ด๋ จ ๋ฉ์๋
import java.util.LinkedList;
import java.util.Queue;
public static void main(String[] args) {
// Queue<String> queue = new LinkedList<>()
Queue<Integer> queue = new LinkedList<>();
}
- Queue์ ๊ฐ์ ์ถ๊ฐํ๋ ๋ฉ์๋
- queue.add(VALUE);
- queue.offer(VALUE);
- Queue ๊ฐ ์ ๊ฑฐ == queue.remove();
- Queue ์ด๊ธฐํ == queue.clear();
- Queue์ ์ฒซ๋ฒ์งธ ๊ฐ์ ๋ฐํ ํ ์ ๊ฑฐ, ๋ง์ฝ ๊ฐ์ด ๋น์ด์๋ค๋ฉด null ๋ฐํ
- queue.poll();
- Queue์์ ๊ฐ์ฅ ๋จผ์ ๋ค์ด๊ฐ ๊ฐ ์ถ๋ ฅ == queue.peek();
- Queue ์ฌ์ฉ ์์
- ํ๋ก์ธ์ค ๊ด๋ฆฌ
- ์บ์ ๊ตฌํ
- ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ํ์ํ ํ๋ก๊ทธ๋จ
'Programmers lv-0' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ ๋ฒ๋ง ๋ฑ์ฅํ ๋ฌธ์ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
---|---|
๊ฐ๊น์ด ์ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
์ค๋ณต๋ ๋ฌธ์ ์ ๊ฑฐ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.27 |
์์ธ์๋ถํด - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.27 |
์จ์ด์๋ ์ซ์์ ๋ง์ (1) - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.27 |
๊ตฌ์ฌ์ ๋๋๋ ๊ฒฝ์ฐ์ ์ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.27 |
๋๊ธ