본문 바로가기
프로그래머스 문제풀어보기

[Lv.0] 컨트롤 제트

by dantriss 2023. 3. 22.


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

 

문제를 풀고 다른분들 풀이를 보니 stack을 이용해서 푸신분들이 많았다. 다른분들 풀이를 보면서 한 번 더 훑어 보기로하고

글을 작성하려고 했는데 방법이 많이 다르고 간단해서 부끄럽지만 이또한 해결된 방법이라서 작성하기로 했다.

 

우선 문자열 s는 공백으로 숫자들과 Z가 구분되어 있다. 

그래서 String 배열 arr에 빈칸(" ")을 기준으로 split을 활용해 문자열 s의 값들을 저장하였다.

그 후 배열 arr에 Z가 존재한다면 기호 minus를 포함해서 concat을 활용해 그 이전자리에 있던 숫자로 치환해주었다.

 

이렇게 하자 Z이전에 숫자가 원래 -를가지고 있던 문자들은 concat에의해 --로 변환되었다.

 

이런 문제들을 해결하기위해 배열 arr에 --를 가지고 있다면 replace를 활용해 빈칸("")으로 바꿔버렸다.

 

모든 문자들을 바꾼 후 배열 arr에는 숫자의 형태를 가진 문자들이 들어가있기 때문에

Integer.parseInt()를 활용해 숫자로 바꾼후 차례대로 answer에 값들을 더했다.

이렇게 하면 문자Z는 이전자리와 같은 값을가지되 반대되는 성질을 가진 정수로 변해서 값이 도출된다.

 

class Solution {
    public int solution(String s) {
        int answer = 0;
        String[] arr = s.split(" ");
        String minus ="-";
        
        for(int i = 0; i<arr.length; i++){
            if(arr[i].equals("Z")){
                arr[i] = minus.concat(arr[i-1]);
            }
            if(arr[i].contains("--")){
                arr[i] = arr[i].replace("--","");
            }
            answer +=Integer.parseInt(arr[i]);
            
        }
        
        
        return answer;
    }
}

댓글