문제

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

 

프로그래머스

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

programmers.co.kr

문제 설명

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어

  • "()()" 또는 "(())()" 는 올바른 괄호입니다.
  • ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

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

코드

import java.util.Stack;

class Solution {
	boolean solution(String s) {
		Stack<Character> stack = new Stack<Character>();
		try {
			for (char cha : s.toCharArray()) {
				if (cha == '(')
					stack.add(cha);
				else { //문자열은 '(' , ')' 밖에 없기 때문에 이 조건식
					stack.pop();
				}
			}
		} catch (Exception e) {
			return false; // 예외발생은 pop()에서 날 것 즉, 짝이 안맞는다.
		}
		return stack.empty() ? true : false;
	}
}

결과

정확성  테스트
테스트 1 〉	통과 (0.17ms, 76.7MB)
테스트 2 〉	통과 (0.20ms, 81.6MB)
테스트 3 〉	통과 (0.19ms, 79MB)
테스트 4 〉	통과 (0.22ms, 79MB)
테스트 5 〉	통과 (0.27ms, 76.4MB)
테스트 6 〉	통과 (0.14ms, 77.1MB)
테스트 7 〉	통과 (0.24ms, 78.2MB)
테스트 8 〉	통과 (0.20ms, 75.6MB)
테스트 9 〉	통과 (0.25ms, 72.8MB)
테스트 10 〉	통과 (0.25ms, 75MB)
테스트 11 〉	통과 (0.20ms, 72.4MB)
테스트 12 〉	통과 (0.22ms, 75.1MB)
테스트 13 〉	통과 (0.30ms, 75.5MB)
테스트 14 〉	통과 (0.24ms, 73.4MB)
테스트 15 〉	통과 (0.21ms, 75.4MB)
테스트 16 〉	통과 (0.22ms, 99.7MB)
테스트 17 〉	통과 (0.21ms, 74.8MB)
테스트 18 〉	통과 (0.25ms, 68MB)
효율성  테스트
테스트 1 〉	통과 (15.83ms, 53.8MB)
테스트 2 〉	통과 (14.89ms, 53.1MB)
채점 결과
정확성: 69.5
효율성: 30.5
합계: 100.0 / 100.0

 


예제에서 s 문자열은 '(', ')'만 존재한다고 했다. 

만약 여러 문자열이 섞여있다면 else if로 변경만 하면 될 것이다.

'자료구조&알고리즘 > Level1' 카테고리의 다른 글

성격 유형 검사하기  (0) 2022.09.26
신고 결과 받기  (0) 2022.09.24
크레인 인형뽑기 게임  (1) 2022.09.21
신규 아이디 추천  (0) 2022.09.18
성격 유형 검사하기  (0) 2022.09.17

+ Recent posts