IT/코딩테스트

[프로그래머스] 올바른 괄호

_KH_ 2025. 6. 2. 16:21

문제


한글 코딩

스택 선언
		
for(n[0]부터 문자열 길이만큼 순환하면서) {
	만약 equals "("이면 {
			스택에 저장하고
			} 아니면 { // ")" 가 나올 때
				스택에서 "("를 꺼낸다. 
			}
			만약(스택이 비어있다면) {
				return true하고
			} 아니면 // 스택에 (가 들어있으면
			 	return false;한다.

작성한 코드

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

		Stack<Character> stack = new Stack<>();
		for(int i =0; i< s.length(); i++) {
			if(s.charAt(i)=='(') {
				stack.push(s.charAt(i));
			} else {
				if (stack.isEmpty()) {
					answer = false;
					break;
				} else {
					stack.pop();
				}
			}
		}
		 if (!stack.isEmpty()) {
		        answer = false;
		    }
		    return answer;
		}
}

고려한 점

1. 자바에서 스택구조 구현하기

java.util.Stack 클래스가 내장되어 있으므로 import하여 사용하기

Stack<Character> stack = new Stack<>();

2. 자바 문자열 길이 세기

.length() 메서드 사용

for(int i =0; i< s.length(); i++) {

3. 문자열 s의 길이만큼 for문 돌릴 때 요소에 접근하는 방법

s[0] 처럼 사용하면 안된다!!!

s[0] 는 배열처럼 인덱스에 접근하는 구조이기 때문이다.

목적 올바른 문법
문자열 길이 s.length()
i번째 문자 접근 s.charAt(i)

 


4. charAt()에는 .equals() 와 같은 객체 메서드를 쓸 수 없다.

if (s.charAt(i) == ')') {

 

와 같이 == 와 ‘ ‘를 사용할 것.

행동 잘못된 코드 올바른 코드
i번째 글자가 ‘)’인지 비교 s.charAt(i).equals(”)”) s.charAt(i) == ‘)’
문자열끼리 비교 “abc” == “abc” “abc”.equals(”abc”)

5. 인덱스 범위 주의

for (int i = 0; i < s.length(); i++) {

와 같이 ≤, ≥ 대신 <, > 사용하기.

인덱스 범위 오류가 발생한다.

'IT > 코딩테스트' 카테고리의 다른 글

[CodeUp] 3130 : 소들의 헤어스타일  (1) 2025.06.08
[CodeUp] 3117 : 0은 빼!  (2) 2025.06.05
[프로그래머스] 수박수박수박수박수?  (0) 2025.06.03