내 코드 (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의 효율성이 더 좋은가봉가..🤔
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
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가 나오게 했더랏..
(한 수 배우고 갑니다...)
(참고)
✔ 스택 클래스 사용법
[Java] 자바 Stack 클래스 사용법 & 예제 총정리
Stack이란? 자료 구조 중 하나인 Stack의 사전적 정의는 '쌓다', '더미'입니다. 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 자료 구조라고 할 수 있습니다. Stack의 가장 큰 특징은 나중에 들어간 것
coding-factory.tistory.com
✔ 효율성 부분 힌트
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/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 |