https://programmers.co.kr/learn/courses/30/lessons/76502
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๊ดํธ ํ์ ํ๊ธฐ
programmers.co.kr
๊ดํธ ๋ฌธ์ ๋ Stack์ ํ์ฉํ๋ ๊ฒ์ผ๋ก ์ ๋ช ํ๋ค. ์ด์ ์ ๋ฐฑ์ค์์ ํ์ด๋ณธ์ ์ด ์์๋ค. ํ์ง๋ง ์ด ๋ฌธ์ ๋ ๊ดํธ๊ฐ (, [, {๋ก ์ข ๋ฅ๊ฐ ๋ค์ํด์ ๊ฐ ์ข ๋ฅ๋ง๋ค ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํด์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ๋ฐ์ ธ์ผ ํ๋ค. ๋ํ ํ๋ณํ๊ธฐ ์ ์ ์ถ๊ฐ๋ก ํ์ ์ฒ๋ฆฌ๋ ํด์ค์ผ ํ๋ค.
๋ ๋ถ๋ถ์ผ๋ก ๋๋์ด์ ๊ตฌํํ๋ค.
1. ๋งค๋ฒ ์ผ์ชฝ์ผ๋ก ํ ์นธ์ฉ ํ์ ์ ํ๋ ํจ์ rotate(s) (x๊ฐ 1์ด์์ผ ๋)
-> 1~s.length๊น์ง ๋ฌธ์๋ค์ ๊ฒฐํฉํ๊ณ , ๋ค์ 0๋ฒ์งธ ๋ฌธ์๋ฅผ ๋ถ์ธ ์๋ก์ด ๋ฌธ์์ด์ ๋ฐํ.
2. ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ธ์ง ํ๋ณํ๋ ํจ์ isCorrect(s)
-> ์คํ์ ๋ฌธ์๋ฅผ ๋ฃ๊ฑฐ๋ ๋นผ์ ํ๋ณ.
1) ๊ดํธ๊ฐ ์ฌ๋ ๋ฌธ์์ ํด๋นํ๋ ๊ฒฝ์ฐ, ์คํ์ push
2) ๋ซ๋ ๋ฌธ์์ ํด๋นํ๋ ๊ฒฝ์ฐ
2-1) ์คํ์ด ๋น์ด์์ง ์์ ๊ฒฝ์ฐ
๊ฐ์ ์ข ๋ฅ์ ์ฌ๋ ๋ฌธ์์ด๋ฉด, pop
์๋๋ฉด, false ๋ฐํ
2-2) ์คํ์ด ๋น์ด์์ผ๋ฉด, false ๋ฐํ.
์ถ๊ฐ) ์คํ์ ๋ฃ๊ฑฐ๋ ๋นผ๋ ์์ ์ด ์ข ๋ฃ๋ ํ, (์ด๊ฑฐ ์ฒ๋ฆฌ ์ํด์ฃผ๋ฉด 13๋ฒ ํ ์คํธ ์ผ์ด์ค ํต๊ณผ ๋ชปํจ)
- ์คํ์ด ๋น์ด์์ผ๋ฉด true ๋ฐํ
- ์คํ์ด ๋น์ด์์ง ์์ผ๋ฉด false ๋ฐํ
13๋ฒ ํ ์คํธ ์ผ์ด์ค (from ํ๋ก๊ทธ๋๋จธ์ค ํด๋น ๋ฌธ์ ๊ฒ์ํ)
(
{{{{
์ฝ๋
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
for(int i = 0; i < s.length(); i++) { //๋ฌธ์ ๊ธธ์ด๋งํผ ๋ฐ๋ณต
if(i >= 1) {
s = rotate(s); //์ผ์ชฝ์ผ๋ก ํ ์นธ์ฉ
}
if(isCorrect(s)) {
answer++;
}
}
return answer;
}
public String rotate(String s) {
String newStr = "";
for(int i = 1; i < s.length(); i++) {
char ch = s.charAt(i);
newStr += Character.toString(ch);
}
char ch = s.charAt(0);
newStr += Character.toString(ch);
return newStr;
}
public boolean isCorrect(String s) {
Stack<Character> stack = new Stack<>();
for(int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if(ch == '(' || ch == '[' || ch == '{') {
stack.push(ch);
} else { // ), ], }
if(!stack.isEmpty()) {
if(ch == ')') {
if(stack.peek() == '(') {
stack.pop();
} else {
return false;
}
}
if(ch == ']') {
if(stack.peek() == '[') {
stack.pop();
} else {
return false;
}
}
if(ch == '}') {
if(stack.peek() == '{') {
stack.pop();
} else {
return false;
}
}
} else {
return false;
}
}
}
if(stack.isEmpty()) {
return true;
} else {
return false;
}
}
}
๊ฒฐ๊ณผ
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ์๊ฒฉ ์์คํ (0) | 2023.07.17 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (0) | 2023.04.30 |
ํ๋ก๊ทธ๋๋จธ์ค - ์์ ๋์งํ (0) | 2022.06.21 |
ํ๋ก๊ทธ๋๋จธ์ค - ์ผ๊ฐ ๋ฌํฝ์ด (0) | 2022.06.20 |
ํ๋ก๊ทธ๋๋จธ์ค - ๊ฒ์ ๋งต (0) | 2022.06.14 |