프로그래머스

99클럽 코테 스터디 11일차 TIL 괄호 회전하기

리콜 2024. 4. 8. 23:37

 

https://school.programmers.co.kr/learn/courses/30/lessons/76502

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

학습키워드

스택
해시

 

처음에 회전이라고 해서 머릿속에서 배열을 십자가 형태로 돌려봤다.ㅋㅋ

문제를 읽으면서 무슨 소리야 했는데

예시를 보며 첫번째 괄호를 맨뒤로 옮기는 것이었다.

 

ArrayList에 중독 되었는지 또 ArrayList에 remove이용해서 해야하나 하면서 

코드 적었다가 String의 charAt으로 해결하였다. 생각해보니 그냥 뒤에 붙이면 되는데...

 

그 뒤 스택을 이용하여 푸는데 어떻게 같은건지 확인하게 해야하지 하며 아스키 코드도 찾아봤는데 

결국 그냥 문자를 넣으면 해결이었다.

 조건문에 !으로 해결하면 좋았을 것 같지만 조건문이 너무 길어지는게 싫어 그냥 else로 처리하였다.

 

import java.util.*;
class Solution {
    public static boolean check(String s) {
		//"[](){}"	
        Stack<Character> stack = new Stack<>();
		for(int i = 0;i< s.length(); i++) {
			if(s.charAt(i) == '(' || s.charAt(i) == '{' || s.charAt(i) == '[' ) {
				stack.add(s.charAt(i));
			}else {
				if(stack.empty()) {
					return false;
				}
                char prev = stack.pop();
			    if((s.charAt(i) == ']' && prev == '[' )|| (s.charAt(i) == '}' && prev == '{' )
                   || (s.charAt(i) == ')' && prev == '(' )) {
					
				}
                else{
                    return false;
                }
			}
		}
		
		if(stack.empty()) {
			return true;
		}
		
		return false;
	}
	public int solution(String s) {
        //왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때
        int answer = 0;
        
        if(check(s)) {
        	answer++;
        }
        
        for(int i = 0; i < s.length() - 1; i++) {
        	s = s.substring(1) + s.charAt(0);
        	if(check(s)) {
            	answer++;
            }
        }
        
        
        
        
        return answer;
        
    }
}

 

오늘은 약간 복습하듯이 문제를 여러개 풀어보았는데

 

https://realcold0.tistory.com/57

 

프로그래머스 폰켓몬 - 자바(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는

realcold0.tistory.com

 

https://realcold0.tistory.com/56

 

프로그래머스 가장 많이 받은 선물 - 자바(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/258712 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞

realcold0.tistory.com

 

https://realcold0.tistory.com/55

 

로또의 최고 순위와 최저 순위 - 자바(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는

realcold0.tistory.com

 

https://realcold0.tistory.com/54

 

프로그래머스 예산 - 자바(Java)

https://school.programmers.co.kr/learn/courses/30/lessons/12982 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는

realcold0.tistory.com

 

 

그중 선물 문제가 카카오 인턴쉽 문제라 그런가 쉽지만 많이 헷갈려서 시간이 오래 걸렸다 코딩테스트를 생각한다면 푸는 시간도 얼른 줄여야겠다.

 

내일부터는 다른 자료구조 문제도 풀어보아야겠다.

반응형