주니어 기초 코딩공부/JAVA_programmers_코딩테스트

옹알이 (1)_programmers_lev00

jju_developer 2022. 12. 27. 13:54
728x90

<코딩 테스트>

문제 설명
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return 하도록 solution 함수를 완성해 주세요.

<나의 풀이 과정>

처음에는  "aya", "ye", "woo", "ma" 네 가지 발음을 하나씩 contains 하는지 비교 후

맞으면 answer에 확인하려고 했으나,

그러면 다른 코드가 주어질 때 하나하나 찾아서 바꿔야 하니까

차라리 배열에 담은 후, 각각을 비교했습니다.

 

replaceAll 할 때에 일부러 "  " 한 칸을 띄운 이유는, 만약 그냥 ""으로 지워버리면 yyee일 때

ye를 지우면 y  e 가 각각의 다른 문자인데 ""로 지우개 된다면 ye로 또 하나의 오답이 정답처리 될 수 있어서

"  " 띄어줬습니다.

 

 

<나의 풀이 코드>

class Solution {
    public int solution(String[] babbling) {
		int answer = 0;

		String str = "";
		String[] babyTalk = { "aya", "ye", "woo", "ma" };

		for (int i = 0; i < babbling.length; i++) {
			for (int j = 0; j < babyTalk.length; j++) {
				if (babbling[i].contains(babyTalk[j]))
					babbling[i] = babbling[i].replaceAll(babyTalk[j], " ");
			}
		}
		for (int i = 0; i < babbling.length; i++) {
			babbling[i] = babbling[i].replaceAll(" ", "");
			if (babbling[i].equals(""))
				answer++;
		}
		return answer;
	}
}

 

<다른 사람 풀이>

--정규식 문제 풀이
class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        for(int i=0; i<babbling.length; i++){
            if(babbling[i].matches("^(aya(?!aya)|ye(?!ye)|woo(?!woo)|ma(?!ma))+$")){
                answer++;
            }
        }
        return answer;
    }
}

<다른 사람 풀이>

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;

        for(int i =0; i < babbling.length; i++) {
            babbling[i] = babbling[i].replace("aya", "1");
            babbling[i] = babbling[i].replace("woo", "1");
            babbling[i] = babbling[i].replace("ye", "1");
            babbling[i] = babbling[i].replace("ma", "1");
            babbling[i] = babbling[i].replace("1", "");
            if(babbling[i].isEmpty()) {
                answer = answer + 1;
            }
        }

        return answer;
    }
}

 

 

 

 

 

 

 

 

 

 

 

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

 

프로그래머스

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

programmers.co.kr

 

728x90