티스토리 뷰
반응형
Using Language : Java Using Tool : IntelliJ
- 프로그래머스 문제 소개
< 올바른 괄호 >
문제 설명
올바른 괄호란 두 개의 괄호 '(' 와 ')' 만으로 구성되어 있고, 괄호가 올바르게 짝지어진 문자열입니다.
괄호가 올바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 합니다.
()() 또는 (())() 는 올바른 괄호입니다.
)()( 또는 (()( 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고,
올바르지 않은 괄호이면 false를 return하는 solution 함수를 완성해 주세요.
제한 조건
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
예시
s answer
()() true
(())() true
)()( false
(()( false
의사코드
- for문을 사용해서 s에 "("가 존재하면 개수를 1씩 더해준다.
- ")"가 존재하면 개수를 1씩 빼준다.
- 개수가 마이너스 값이 나오면 false출력
- for문을 정상적으로 돌았는데 개수가 0이 아니면 false출력
<Solution13.java>
public class Solution13 {
boolean solution(String s) {
int left = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
left++;
} else if (s.charAt(i) == ')') {
if (left <= 0) {
return false;
} else {
left--;
}
}
}
if (left == 0) {
return true;
} else {
return false;
}
}
}
<Solution13Test.java>
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class Solution13Test {
@Test
public void 결과() {
Solution13 solution = new Solution13();
assertTrue("true", solution.solution("()()"));
assertTrue("true", solution.solution("(())()"));
assertFalse("false",solution.solution(")()("));
assertFalse("false",solution.solution("(()("));
}
}
반응형
'프로그래머스' 카테고리의 다른 글
12. 프로그래머스_라면공장 (0) | 2019.03.25 |
---|---|
11. 프로그래머스_예산 (0) | 2019.03.25 |
9. 프로그래머스_124나라의 숫자 (0) | 2019.03.25 |
8. 프로그래머스_핸드폰_번호_가리기 (0) | 2019.03.10 |
7. 프로그래머스_하샤드수 (0) | 2019.02.26 |
댓글