◇ 문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
◇ 제한 조건
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
◇ 입출력 예시
| s | answer |
| "()()" | true |
| "(())()) | true |
| ")()(" | false |
| "(()(" | false |
◇ 초기 내용
※ [출처] 프로그래머스-코딩테스트 연습-문제명
※ 초기 내용을 참고하여 문제에 맞는 코드를 작성하세요.
class Solution {
public String solution(String s) {
String answer = "";
return answer;
}
}
◇ 풀이 과정
문제의 풀이과정은 이러했다.
- 괄호의 수를 셀 변수 bucket을 생성한다.
- for반복문을 이용하여 각 문자열의 요소에 접근
- 만약, 열린 괄호라면 bucket을 1증가한다.
- 만약, 닫힌 괄호라면 bucket을 1감소한다.
- bucket이 0보다 작다면 닫힌 괄호가 열린괄호보다 많으므로 answer을 false로 설정
- 모든 반복이 끝난후 bucket이 0보다 크다면 열린괄호가 닫힌 괄호보다 많으므로 answer을 false로 설정
◇ 답안
더보기
더보기
class Solution {
boolean solution(String s) {
boolean answer = true;
int bracket = 0;
for(int i = 0; i<s.length(); i++){
if(s.charAt(i)=='(') bracket++;
else if(s.charAt(i)==')') bracket--;
if(bracket<0){
answer = false;
}
}
//System.out.println(bracket);
if(bracket>0){
answer = false;
}
return answer;
}
}
◇ 실행결과

◇ 출처
https://programmers.co.kr/learn/challenges
코딩테스트 연습
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr
'코딩테스트 > Java' 카테고리의 다른 글
| [Level2] 스킬트리 답안 및 풀이 (0) | 2021.12.30 |
|---|---|
| [Level2] 이진 변환 반복하기 답안 및 풀이 (0) | 2021.12.29 |
| [Level2] 다음 큰 숫자 답안 및 풀이 (0) | 2021.12.27 |
| [Level2] 숫자의 표현 답안 및 풀이 (0) | 2021.12.26 |
| [Level2] 최댓값과 최솟값 답안 및 풀이 (0) | 2021.12.25 |
댓글