작성
·
13
0
이전 글에 같은 내용의 질문을 확인했는데 해당 글에 다른 분이 댓글다신거 확인하고도 의문이 안풀려서요.
저는 peek() 메소드를 사용해서 코드를 작성했는데 첫번째 예시에 대한 답은 잘나오는데 두번째 예시의 답이 24가 아닌 26으로 나옵니다.
왜 26이 나오는지 도저히 모르겠어요..
혹시 peek() 메소드로는 해당 문제풀이가 힘든걸까요?
import java.util.Scanner;
import java.util.Stack;
public class IronRod {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String laser = scanner.next();
System.out.println(solution(laser));
}
private static int solution(String laser) {
int answer = 0;
Stack<Character> stack = new Stack<>();
// 선생님 풀이
for(int i = 0; i < laser.length(); i++){
if(laser.charAt(i) == '('){
stack.push('(');
} else {
stack.pop();
if(laser.charAt(i - 1) == '('){
answer += stack.size();
} else {
answer++;
}
}
}
// 제가 작성한 코드
for(char c : laser.toCharArray()){
if(c == '('){
stack.push(c);
} else {
if(stack.peek() == '('){
stack.pop();
answer += stack.size();
} else {
stack.pop();
answer++;
}
}
}
return answer;
}
}
답변