Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 보이어무어
- 후위 표기법
- Stack
- fragment identifier
- 영문자 확인
- 알고리즘
- Dynamic Programming
- 2017 카카오 코드
- 최소공배수
- HashMap
- 동적계획법
- python
- pandas
- 프로그래머스
- 완전 탐색
- 점프와 순간이동
- 메뉴리뉴얼
- dfs
- 조합
- 순열
- 쿼드압축 후 개수세기
- 완전탐색
- 문자열
- Java
- 어려웠던 문제
- 에라토스테네스의 체
- 튜플
- 반복문
- 규칙찾기
- HashSet
Archives
- Today
- Total
csmoon1010의 SW 블로그
[200803] 올바른 괄호 - 연습문제(level2) 본문
1. 문제 이해
- 문자열 s : '(' 또는 ')'로 이루어진 문자열
- 결과 answer : s가 올바른 괄호(짝지어서 닫히는 경우)에는 true, 그렇지 않으면 false
2. 전략
- Stack 컬렉션 이용
(1) '(' 인 경우 : stack에 push
(2) ')' 인 경우
- stack이 empty가 아닌 경우 : stack에서 pop → 짝이 될 수 있는 '('가 앞에 나온 상태
- stack이 empty인 경우 : false
(3) 문자열 s를 모두 본 후 : stack이 empty가 아니면 false
3. 참고사항
(1) 다른 풀이 1 : count 변수를 이용하는 경우
- '(' : count++
- ')' : count --
(결론) count가 0인 경우만 answer = true
4. 코드
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<Character> stack = new Stack<>();
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) == '(')
stack.push('(');
else{
if(!stack.empty()) stack.pop();
else{
answer = false;
break;
}
}
}
if(!stack.empty()) answer = false;
return answer;
}
}
'Coding Test > 프로그래머스' 카테고리의 다른 글
★[200807] 땅따먹기 - 연습문제(level2) (0) | 2020.08.07 |
---|---|
[200804] 다음 큰 숫자 - 연습문제(level2) (0) | 2020.08.04 |
★[200706] 가장 큰 정사각형 찾기 - 연습문제(level2) (0) | 2020.07.06 |
[200528] 괄호 변환 - 2020 KAKAO BLIND RECRUITMENT(level2) (0) | 2020.05.29 |
★[200526] 카카오프렌즈 컬러링북 - 2017 카카오코드 예선(level2) (0) | 2020.05.26 |
Comments