반응형
내 코드 (1트. 틀림)
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Queue<String> q = new LinkedList();
for(int i=0 ; i < s.length() ; i++) {
if(s.substring(i, i+1).equals("(")) {
q.offer("(");
} else {
q.poll();
}
}
if(!q.isEmpty()) {
answer = false;
}
return answer;
}
}
스택 쓰면 될 거 같았는데 일단 큐를 먼저 써보았음...
근데 패스 못 한 TC들이 있었음..
내 코드 (2트. 틀림)
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<String> stack = new Stack<String>();
for(int i=0 ; i < s.length() ; i++) {
if(s.substring(i, i+1).equals("(")) {
stack.push("(");
} else {
// 스택이 비어있는 경우
if(stack.empty()) {
answer = false;
break;
}
stack.pop();
}
}
if(!stack.empty()) {
answer = false;
}
return answer;
}
}
그래서 원래 문제 의도인 것 같은 스택을 이용해 풀어보았음..
하지만 이마저도 효율성 테스트 통과를 못 한..😥
그래서 뭘까.. 싶어서 힌트를 보기로 했고, 문제를 해결할 수 있었다!
내 코드 (정답)
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<String> stack = new Stack<String>();
for(int i=0 ; i < s.length() ; i++) {
if(s.charAt(i) == '(') {
stack.push("(");
} else {
// 스택이 비어있는 경우
if(stack.empty()) {
answer = false;
break;
}
stack.pop();
}
}
if(!stack.empty()) {
answer = false;
}
return answer;
}
}
알고 보니 내가 반복문 안에서 .substring()을 썼는데,
얘를 .charAt()으로 바꿔주면 된다고 해서 해봤더니 패스했다!!
substring보다 charAt의 효율성이 더 좋은가봉가..🤔
class Solution {
boolean solution(String s) {
boolean answer = false;
int count = 0;
for(int i = 0; i < s.length() ; i++){
if(s.charAt(i) == '('){
count++;
}
if(s.charAt(i) == ')'){
count--;
}
if(count < 0){
break;
}
}
if(count == 0){
answer = true;
}
return answer;
}
}
다른 분들 코드도 봤는데, 아예 스택을 이용하지 않고
변수 count 하나만 사용해서 푼 경우도 많았다.
"(" 면 count++를 하고, ")" 면 count--를 해서
이 count가 0 보다 작으면 반복문을 탈출하게 break하고,
반복문을 나와서도 count가 0이면 true가 나오게 했더랏..
(한 수 배우고 갑니다...)
(참고)
✔ 스택 클래스 사용법
✔ 효율성 부분 힌트
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv. 1] 문자열 내림차순으로 배치하기 (0) | 2023.02.24 |
---|---|
[프로그래머스/Lv. 1] 약수의 개수와 덧셈 (0) | 2023.02.24 |
[프로그래머스/Lv. 2] 기능개발 (0) | 2023.02.23 |
[프로그래머스/Lv. 3] 같은 숫자는 싫어 (1) | 2023.02.22 |
[프로그래머스/Lv. 2] 위장 (0) | 2023.02.22 |