강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

문크님의 프로필 이미지
문크

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

5. 쇠막대기

peek() 메소드 사용한 문제풀이

작성

·

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;
    }

}

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
문크님의 프로필 이미지
문크

작성한 질문수

질문하기