JAVAIARY

프로그래머스) lv.2 올바른 괄호 본문

examplePractice

프로그래머스) lv.2 올바른 괄호

shiherlis 2023. 1. 23. 14:57

문제: https://school.programmers.co.kr/learn/courses/30/lessons/12909

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

public class CorrectBracket {
	boolean solution(String s) {
		boolean answer = true;

		if (s.startsWith(")")|| s.endsWith("(") || s.length() % 2 != 0) {
			// ),( 로 시작/끝나거나 s의 길이가 홀수이면 false 리턴
			answer = false;
		} else {
			// countA : ( 의 개수
			// countB : ) 의 개수
			int countA = 0;
			int countB = 0;
			for (int i = 0; i < s.length(); i++) {
				if (s.charAt(i) == '(') {		// "" : String , '' : char
					countA += 1;
				} else {
					countB += 1;
				}
				if(countB > countA) {
					answer = false;
					break;
				}
			}
		}
		return answer;
	}
}
  • stack / queue 카테고리인데 사용하지는 않음 ㅎ....

1차 유효성 체크

  • ) 로 시작할 경우
  • ( 로 끝난 경우
  • 문자열 길이가 홀수인 경우

—> false리턴

2차 유효성 체크

  • 여는 괄호와 닫는 괄호의 개수를 각각 체크
  • 여는괄호 ‘(’ 보다 닫는 괄호 ‘)’ 가 많은 경우 반복문 중에 빠져나옴
  • 반복 종료후 여는 괄호와 닫는 괄호의 갯수가 같지 않은 경우

—> false 리턴


code review in study

'examplePractice' 카테고리의 다른 글

프로그래머스 ) 최댓값과 최솟값  (0) 2023.02.18
프로그래머스) lv.1 약수의 개수와 덧셈  (0) 2023.01.30
함수  (0) 2022.12.15
반복문, 배열  (0) 2022.10.02
반복문, 배열  (0) 2022.10.02