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

2024. 11. 26. 13:20·코테/Algorithm
728x90
 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

풀이

 

1. Stack을 사용한 이유

괄호를 비교해줘야 하기 때문에 이것도 동일하게 제일 마지막에 들어와있는 괄호와, 새로 넣을 괄호를 비교해서 () 한 쌍이 되게 된다면 pop으로 꺼내주면 문제를 쉽게 해결할 수 있을 것이라 생각했다.

 

2. 다른 사람들은 어떻게 코드를 짰는가

스택을 쓰지 않고 푼 코드가 있었다. 해당 코드는 '('이 들어오면 count++ ')'이 들어오면 count--를 해주면서 count < 0이 되는 순간 올바른 괄호가 불가능하기 때문에 break로 빠져나왔다.

 

3. 내 풀이

1번에서 말한 것과 같이 괄호비교를 해주며 stack안에 남아있는 괄호가 없으면 올바른 괄호, 스택 안에 괄호가 남아있으면 올바르지 못한 괄호라고 판단했다. 반복은 한 번만 해야된다고 생각했는데, 그 이유는 문자열 s의 길이가 100,000이하의 자연수이기 때문에 최대 100,000 일 수 있기 때문. 이중for문을 사용해서 문제를 해결하게 된다면 O(n^2)이라 비효율적이다.

 

 

[프로그래머스] 같은 숫자는 싫어 (JAVA)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 어제 유튜브 알고리즘에 걸린 영상을 보고 난 뒤에 제대로 공부하

dropdew.tistory.com

 

 

전체코드
import java.io.*;
import java.util.*;

class Solution {
    boolean solution(String s) {
        Stack<Character> stack = new Stack<>();
        boolean answer = true;
        for(int i=0; i<s.length(); i++){
            char now = s.charAt(i);
            if(stack.isEmpty()){
                if(now == ')'){
                    answer = false;
                    break;
                }else{
                    stack.push('(');
                }
            }else{
                char pre = stack.peek();
                if(pre == '(' && now == ')'){
                    stack.pop();
                    continue;
                }else{
                    stack.push(now);
                }
            }
        }
        if(stack.size() > 0){
            answer = false;
        }

        return answer;
    }
}
728x90

'코테 > Algorithm' 카테고리의 다른 글

[프로그래머스] 네트워크 (JAVA)  (0) 2024.11.28
[프로그래머스] 타겟 넘버 (JAVA)  (1) 2024.11.27
[프로그래머스] 기능개발 (JAVA)  (0) 2024.11.26
[프로그래머스] 같은 숫자는 싫어 (JAVA)  (0) 2024.11.26
[프로그래머스] PCCP 모의고사 1번. 외톨이 알파벳 (JAVA)  (0) 2024.11.24
'코테/Algorithm' 카테고리의 다른 글
  • [프로그래머스] 네트워크 (JAVA)
  • [프로그래머스] 타겟 넘버 (JAVA)
  • [프로그래머스] 기능개발 (JAVA)
  • [프로그래머스] 같은 숫자는 싫어 (JAVA)
DROPDEW
DROPDEW
💻 Developer | 기록하지 않으면 존재하지 않는다
  • DROPDEW
    제 2장 1막
    DROPDEW
  • 전체
    오늘
    어제
    • Dev (410) N
      • App·Android (1)
      • BE (42) N
        • HTTP 웹 기본 지식 (8)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (12)
        • 스프링부트와 JPA 활용 (9) N
        • 스프링부트 시큐리티 & JWT (0)
        • PHP (6)
      • FE·Client (23)
        • HTML (1)
        • React (19)
        • Unity (1)
      • Data (12)
        • AI (4)
        • Bigdata (6)
        • Database (1)
        • 빅데이터분석기사 (0)
      • Infra (0)
      • Activity (0)
        • Education (0)
        • Intern (0)
        • 리모트 인턴십 6기 (0)
        • 구름톤 유니브 4기 (0)
        • SW교육기부단 15기 (0)
      • CS (8) N
      • 취준 (13)
        • 자격증 (4)
        • 인적성·NCS (6)
        • 코테·필기·면접 후기 (3)
      • 코테 (270)
        • Algorithm (222)
        • SQL (35)
        • 정리 (13)
      • 인사이트 (27)
        • 회고 (0)
        • 금융경제뉴스 (7)
        • 금융용어·지식 (2)
        • 북마크 (7)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    수학
    이분탐색
    브루트포스 알고리즘
    다이나믹프로그래밍
    그래프탐색
    투포인터
    백준
    오블완
    최단경로
    시뮬레이션
    너비우선탐색
    자료구조
    그리디알고리즘
    구현
    누적합
    문자열
    정렬
    매개변수탐색
    그래프이론
    티스토리챌린지
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
DROPDEW
[프로그래머스] 올바른 괄호 (JAVA)
상단으로

티스토리툴바