#1 알고리즘
#1-1
#1-2
#2 코드
#2-1 자바
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true) {
String testCase = sc.nextLine(); // 여기에 trim()을 쓰면, " ."가 "."로 변해버린다.
if(testCase.equals(".")) {
break; // while을 break
}
boolean isBalanced = true;
Stack<Character> stack = new Stack<Character>();
for(char c : testCase.toCharArray()) {
if(c == '(') {
stack.push('(');
} else if(c == ')') {
if(stack.isEmpty()) {
isBalanced = false;
break; // for을 break
} else {
if(stack.peek() == '(') {
stack.pop();
} else {
isBalanced = false;
break; // for을 break
}
}
} else if(c == '[') {
stack.push('[');
} else if(c == ']') {
if(stack.isEmpty()) {
isBalanced = false;
break; // for을 break
} else {
if(stack.peek() == '[') {
stack.pop();
} else {
isBalanced = false;
break; // for을 break
}
}
} else {
continue;
}
}
if(isBalanced && stack.isEmpty()) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
sc.close();
}
}
입력 버퍼로부터 한줄씩 가져올 때, trim()을 쓰는 습관은 반드시 좋은 것이라고 쉽게 생각했다. 하지만, 모든 것엔 장단점이 있는 법이다.
#2-2 코틀린
import java.util.Stack
fun main() {
while(true) {
val testCase = readln()!! // 여기에 trim()을 쓰면, " ."가 "."로 변해버린다.
if(testCase == ".") {
break // while을 break
}
var isBalanced = true
val stack = Stack<Char>()
for(c in testCase) {
if(c == '(') {
stack.push('(')
} else if(c == ')') {
if(stack.isEmpty()) {
isBalanced = false
break // for을 break
} else {
if(stack.peek() == '(') {
stack.pop()
} else {
isBalanced = false
break // for을 break
}
}
} else if(c == '[') {
stack.push('[')
} else if(c == ']') {
if(stack.isEmpty()) {
isBalanced = false
break // for을 break
} else {
if(stack.peek() == '[') {
stack.pop()
} else {
isBalanced = false
break // for을 break
}
}
} else {
continue
}
}
if(isBalanced and stack.isEmpty()) {
println("yes")
} else {
println("no")
}
}
}
입력 버퍼로부터 한줄씩 가져올 때, trim()을 쓰는 습관은 반드시 좋은 것이라고 쉽게 생각했다. 하지만, 모든 것엔 장단점이 있는 법이다.
'문제 풀이 > 기타' 카테고리의 다른 글
[백준] 28417 (스케이트보드) (0) | 2023.12.11 |
---|---|
[백준] 11866 (요세푸스 문제 0) (0) | 2023.12.09 |
[백준] 27522 (카트라이더: 드리프트) (0) | 2023.12.05 |
[백준] 2839 (설탕 배달) (0) | 2023.12.04 |
[백준] 9076 (점수 집계) (0) | 2023.12.02 |