문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/76502
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
먼저 괄호 쌍을 hashmap으로 만들어 둔 다음, stack을 사용해서 괄호 쌍이 맞는 지 확인한다.
느낀 점 & 기억 할 것
- 다른 사람 풀이를 보고 나서 깨달은 건데 StringBuilder를 쓰면 나처럼 concat이나 substring을 안써도 되고 실행 시간을 줄일 수 있을 것 같다.
- 요즘 오랜만에 알고를 풀기 시작 했더니 최적화나 가독성 따위 신경 쓰지 않고 코드를 쓰게 되는 것 같다. 너무 피곤한 정신 상태로 문제를 풀어서 그런 것도 있지만,,, 앞으로는 조금만 더 신경 쓰자 ㅠ,ㅜ
- String ➡️ Char `String.valueOf()`
정답 코드
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
HashMap<Character, Character> map = new HashMap<>();
map.put('(', ')');
map.put('[', ']');
map.put('{', '}');
Stack<Character> check = new Stack<>();
for(int c = 0; c < s.length(); c++) {
s = s.concat(String.valueOf(s.charAt(0)));
s = s.substring(1);
for(int i = 0; i < s.length(); i++) {
if(!check.isEmpty()) {
char value = check.peek();
if(map.containsKey(value) && s.charAt(i) == map.get(value)) {
check.pop();
} else {
check.push(s.charAt(i));
}
} else {
check.push(s.charAt(i));
}
}
if(check.size() == 0) answer = answer + 1;
check.clear();
}
return answer;
}
}
'개발 > 알고리즘' 카테고리의 다른 글
[프로그래머스] 불량사용자 Python 풀이 (1) | 2025.02.02 |
---|---|
[프로그래머스] Lv2. 연속 부분 수열 합의 개수 (0) | 2024.07.17 |
[프로그래머스] LV2. 영어 끝말잇기 (0) | 2024.07.15 |
[프로그래머스] LV2. 점프와 순간 이동 (1) | 2024.07.10 |
[프로그래머스] LV2. 멀리 뛰기 (0) | 2024.07.09 |