-
[프로그래머스] 괄호 회전하기_Java코딩테스트 2024. 4. 26. 21:00
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/76502
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
1. (), [], {} 는 모두 올바른 괄호 문자열이다.
2. ([]) , {}([]) 도 올바른 괄호 문자열이다.3. 대괄호, 중괄호, 소괄호로 이루어진 문자열 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 만큼 회전시켰을 때 올바른 괄호 문자열이 되는 경우의 수를 return한다.
코드
Stack을 이용하여 괄호쌍이 맞는지 확인한다.
import java.util.Stack; class Solution { public int solution(String s) { int len= s.length(); int cnt = 0; for(int i=0; i<len; i++){ if(isPairString(s,i,len)) cnt++; } return cnt; } private boolean isPairString(String s,int x,int len){ Stack<Character> stack = new Stack(); for(int i=0; i<len; i++){ char c = s.charAt((i+x)%len); if(stack.isEmpty() || !isPair(stack.peek(),c)) stack.push(c); else stack.pop(); } return stack.isEmpty(); } private boolean isPair(char pre,char c){ if(pre =='(' && c == ')') return true; if(pre =='[' && c == ']') return true; if(pre =='{' && c == '}') return true; return false; } }
실행 결과1
'코딩테스트' 카테고리의 다른 글
[백준] 16199 나이 계산하기_Java (0) 2024.05.01 [프로그래머스] 할인 행사_Java (0) 2024.04.29 [백준] 30970 선택의 기로_Java (0) 2024.04.24 [프로그래머스] 큰 수 만들기_Java (0) 2024.04.23 [프로그래머스] 영어 끝말잇기_Java (0) 2024.04.22