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

[Lv.0] 옹알이(1)

by dantriss 2023. 4. 4.


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

처음에 짠 못생긴 코드를 테스트용으로 채점했는데 통과되어서 조금 더 수정해서 다시 채점했다.

처음에 제출한 테스트용 코드.. 통과가 되어서 당황했다. 이 못생긴코드가 내가 푼 코드로 등록되어버렸다...

우선 필요한 문자들을 String 배열 words에 등록해주었다.

그 후 babbling에 있는 문자열들을 하나하나 다 비교해봐야하기 때문에 babbling에 길이만큼 반복문을 작성해준다.

그리고 words에 있는 문자열들이 babbling에 있는 문자열들에 들어 있다면 replace를 이용해 1로 변경해준다(빈칸과 영어가 아니라면 어떤것으로 해도 상관없다)

왜 빈칸으로 하면 안되냐면 "wyeoo" 같은 경우 때문에 그렇다.

"wyeoo"에는 "ye" 가 들어가 있어서 빈칸으로 치환되면 "woo" 가 만들어지는데 해당부분도 words에 포함되어 있는 값이기 때문에 해당 값도 빈칸으로 치환되어 값이 맞지 않게 된다. (words에서 연속된 값들이어야해서 yewoo라면 만들어질수 있는 단어지만 wyeoo같은경우는 해당되지 않는다.)

 

변경된 값을 babbling[i]에 그대로 넣어 바뀐 값이 적용되게 한다.

그러면 위와같이 값들이 babbling에 저장이 되게 된다. 

해당값에서 또 1을 replace로 빈칸으로 처리한 후 만약 babbling[i]에 빈칸이 저장되어 있다면 answer에 증감연산자를 이용해 1씩 증가시키면 원하는 값이 출력되게 된다.

 

 

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        String[] words =  {"aya", "ye", "woo", "ma"};
        
        System.out.println(Arrays.toString(words));
        
        for(int i=0; i<babbling.length;i++){
            for(int j=0; j<words.length;j++){
                if(babbling[i].contains(words[j])){
                    babbling[i] = babbling[i].replace(words[j],"1");
                    
                }
            }    
            babbling[i] = babbling[i].replace("1","");
            if(babbling[i].isEmpty()){
                answer ++;
            }
        }
        
        
        return answer;
    }
}

'프로그래머스 문제풀어보기' 카테고리의 다른 글

[Lv.0] 분수의 덧셈  (0) 2023.04.05
[Lv.0] 팩토리얼  (0) 2023.04.05
[Lv.0] 다음에 올 숫자  (0) 2023.04.04
[Lv.0] 문자열 계산하기  (0) 2023.04.01
[Lv.0] 숨어있는 숫자의 덧셈 (2)  (0) 2023.03.23

댓글