728x90
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
1. Stack을 사용한 이유
괄호를 비교해줘야 하기 때문에 이것도 동일하게 제일 마지막에 들어와있는 괄호와, 새로 넣을 괄호를 비교해서 () 한 쌍이 되게 된다면 pop으로 꺼내주면 문제를 쉽게 해결할 수 있을 것이라 생각했다.
2. 다른 사람들은 어떻게 코드를 짰는가
스택을 쓰지 않고 푼 코드가 있었다. 해당 코드는 '('이 들어오면 count++ ')'이 들어오면 count--를 해주면서 count < 0이 되는 순간 올바른 괄호가 불가능하기 때문에 break로 빠져나왔다.
3. 내 풀이
1번에서 말한 것과 같이 괄호비교를 해주며 stack안에 남아있는 괄호가 없으면 올바른 괄호, 스택 안에 괄호가 남아있으면 올바르지 못한 괄호라고 판단했다. 반복은 한 번만 해야된다고 생각했는데, 그 이유는 문자열 s의 길이가 100,000이하의 자연수이기 때문에 최대 100,000 일 수 있기 때문. 이중for문을 사용해서 문제를 해결하게 된다면 O(n^2)이라 비효율적이다.
[프로그래머스] 같은 숫자는 싫어 (JAVA)
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 어제 유튜브 알고리즘에 걸린 영상을 보고 난 뒤에 제대로 공부하
dropdew.tistory.com
전체코드
import java.io.*;
import java.util.*;
class Solution {
boolean solution(String s) {
Stack<Character> stack = new Stack<>();
boolean answer = true;
for(int i=0; i<s.length(); i++){
char now = s.charAt(i);
if(stack.isEmpty()){
if(now == ')'){
answer = false;
break;
}else{
stack.push('(');
}
}else{
char pre = stack.peek();
if(pre == '(' && now == ')'){
stack.pop();
continue;
}else{
stack.push(now);
}
}
}
if(stack.size() > 0){
answer = false;
}
return answer;
}
}
728x90
'코테 > Algorithm' 카테고리의 다른 글
[프로그래머스] 네트워크 (JAVA) (0) | 2024.11.28 |
---|---|
[프로그래머스] 타겟 넘버 (JAVA) (1) | 2024.11.27 |
[프로그래머스] 기능개발 (JAVA) (0) | 2024.11.26 |
[프로그래머스] 같은 숫자는 싫어 (JAVA) (0) | 2024.11.26 |
[프로그래머스] PCCP 모의고사 1번. 외톨이 알파벳 (JAVA) (0) | 2024.11.24 |