문제
한글 코딩
스택 선언
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 |