티스토리 뷰

반응형

Using Language : Java Using Tool : IntelliJ


  • 프로그래머스 문제 소개

< 올바른 괄호 >

문제 설명

올바른 괄호란 두 개의 괄호 '(' 와 ')' 만으로 구성되어 있고, 괄호가 올바르게 짝지어진 문자열입니다.
괄호가 올바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 합니다.
()() 또는 (())() 는 올바른 괄호입니다.
)()( 또는 (()( 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고,
올바르지 않은 괄호이면 false를 return하는 solution 함수를 완성해 주세요.

제한 조건

  • 문자열 s의 길이 : 100,000 이하의 자연수
  • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

예시

s	     answer
()()	     true
(())()	     true
)()(	     false
(()(	     false

의사코드

  1. for문을 사용해서 s에 "("가 존재하면 개수를 1씩 더해준다.
  2. ")"가 존재하면 개수를 1씩 빼준다.
  3. 개수가 마이너스 값이 나오면 false출력
  4. 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("(()("));
	}
}


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
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
글 보관함