๋ฐ์ํ
๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/12973?language=java
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฌธ์ ์์ฝ
์ฃผ์ด์ง ๋ฌธ์์ด s์ ๋ํด ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ฉด 1, ์๋๋ฉด 0 ๋ฐํํ๊ธฐ
- ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ: ๋ฌธ์์ด์์ ๊ฐ์ ์ํ๋ฒณ์ด 2๊ฐ ๋ถ์ด์๋ ์ง์ ์ ๊ฑฐํ ๋ค, ์๋ค๋ก ๋ฌธ์์ด์ ์ด์ด ๋ถ์ธ๋ค. ์ด๋ฅผ ๋ฐ๋ณตํด์ ๋ฌธ์์ด์ด ๋ชจ๋ ์ ๊ฑฐ๋๋ค๋ฉด ์ฑ๊ณต
- ์์: `baabaa` → `bbaa` → `aa` → ์ฑ๊ณต
์ ํ
- ๋ฌธ์์ด์ ๊ธธ์ด : 1,000,000 ์ดํ์ ์์ฐ์
- ๋ฌธ์์ด์ ๋ชจ๋ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
ํ์ด
๋ฌธ์์ด ๊ธธ์ด๊ฐ 10^6์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๊ฐ O(nlogn) ์ดํ์ด๋ฉด ๋ฉ๋๋ค.
- ๋ฌธ์์ด์ ์ฒซ ๋ถ๋ถ๋ถํฐ ์ง์ ์ฐพ๋๋ค.
- ๊ฒ์ฌํ ๋ง์ง๋ง ๋ถ๋ถ + ๊ทธ ์ ๋ถ๋ถ์ ๊ฐ์ด ๋์ผํ๋ฉด ์ง์ด๋ค.
- ์ง์ ์ฐพ์ผ๋ฉด ์ด๋ฅผ ์ ๊ฑฐํ๋ค.
- ์ ๊ฑฐํ ๋ท๋ถ๋ถ๋ถํฐ ๋ค์ ๊ฒ์ฌํ์ฌ 1~2 ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
์ฌ๊ธฐ์ ์ฐพ์ ์ ์๋ ํค์๋๋ ‘๋ง์ง๋ง ๋ถ๋ถ’, ‘์ ๊ฑฐ’, ‘empty’์ ๋๋ค.
์ด ํค์๋๋ฅผ ํตํด ์คํ์ ์ฌ์ฉํ๋ฉด ๋๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ฆ, ์คํ์ ๋ฌธ์๋ฅผ ํ๋์ฉ ์ฝ์ ํด ๊ฐ๋ฉฐ ์ง์ ์ฐพ์ผ๋ฉด 2๋ฒ pop ํ๋ ๊ฒ์ ๋ฐ๋ณตํ๋ฉด ๋ฉ๋๋ค.
์ฝ๋
import java.util.*;
class Solution
{
public int solution(String s)
{
Stack<Character> stack = new Stack<>();
stack.push(s.charAt(0));
for(int i=1; i<s.length(); i++){
char c = s.charAt(i);
if(!stack.isEmpty() && stack.peek()==c){
stack.pop();
} else{
stack.push(c);
}
}
return stack.isEmpty() ? 1 : 0;
}
}
๐ท ์๊ฐ ๋ณต์ก๋
- N: ๋ฌธ์์ด s์ ๊ธธ์ด
- for๋ฌธ: O(N)
- ์ต์ข ์๊ฐ ๋ณต์ก๋: O(N)
๋ฐ์ํ
'๐ช Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์ (JAVA) (1) | 2025.02.06 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ฃผ์ ๊ฐ๊ฒฉ (JAVA) (2) | 2025.02.05 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ๊ดํธ ํ์ ํ๊ธฐ (JAVA) (2) | 2025.02.04 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฉ๋ฌธ ๊ธธ์ด (JAVA) (2) | 2025.02.03 |