[LV 1] 옹알이

박경수·2023년 2월 9일
0

codeing-test

목록 보기
1/1
post-thumbnail

문제 이름

옹알이(1)

문제 설명

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


제한사항

1 ≤ babbling의 길이 ≤ 100
1 ≤ babbling[i]의 길이 ≤ 15
babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
문자열은 알파벳 소문자로만 이루어져 있습니다.


입출력 예


정답

예1) 첫번째 리스트에서 발음할 수 있는 것은 "aya"뿐 이다.
예2) 두번째 리스트에서 발음할 수 있는것은 "ayaye", "ye", "yeemawoo" 이다.

유의사항

네 가지를 붙여 만들 수 있는 발음 이외에는 어떤 발음도 할 수 없는 것으로 규정합니다. 예를 들어 "woowo"는 "woo"는 발음할 수 있지만 "wo"를 발음할 수 없기 때문에 할 수 없는 발음입니다.

정답

function solution(babbling) {
    return babbling
      .map((_) => _.replace(/aya|ye|woo|ma/g, ''))
      .filter((str) => !str).length;
}

사용함수 및 기타

  1. map
  2. replace
  3. filter
  4. 정규식
  • map 함수를 이용하여 babbling을 순회하였다.
  • replace 함수와 정규식을 사용해, 조합 할 수 있는 단어가 있다면 공백처리를 하였다.
  • filter 를 사용하여 공백을 확인하여 배열의 길이를 구했다.

풀의

babbling을 순회하기 위해 map 함수를 사용하였다.

babbling.map((item) => {
	console.log(item)
})

"aya",
"yee",
"u",
"maa",
"wyeoo"

사용 가능한 "aya", "ye", "woo", "ma"를 비교하여, 해당 값이 있는 배열 위치를 공백("")으로 변경함.

item.replace(/aya|ye|woo|ma/g, '')

"",
"e",
"u",
"a",
"woo"

정규식(공부중)

정규식은 필요할때 마다 검색하여 사용하는 편이었다.
필요할때를 위해 간단한 정규식 정도는 이해하는 편이 좋겠다 싶었다.

/regexr/i

슬래쉬(/) 문자 사이로 정규식 패턴 을 작성하고, 끝에 (i)는 정규식 플래그이다.

// 기본 사용법

// 리터럴 방식
const regex = /abc/;

// 생성자 방식
const regex = new RegExp("abc");
const regex = new RegExp(/abc/);

여기서 사용된 .replace(정규표현식, "대체문자열")함수는 첫번째로 발견된 녀석을 대체문자열로 변경한다.

: ["aya", "yee", "u", "maa", "wyeoo"],
: ["", "e", "u", "a", "woo"]

배열을 이용해 filter()함수를 사용해 Bool형태로 확인.

item.replace(...).filter( HuArray => {
	console.log(!HuArray)
});

"true",
"false",
"false",
"false",
"false",

filter함수의 반환 값으로는 테스트를 통과하면 새로운 배열, 그렇지 않다면 빈 배열을 반환한다.
HuArray의 빈값을 확인하기위해 !HuArray로 값이 있는지 확인 가능하다.

마지막으로 filter된 결과값(배열)의 길이를 구하면 끝이다.

답안지

function solution(babbling) {
    return babbling
      .map((_) => _.replace(/aya|ye|woo|ma/g, '')) // ["", "e", "u","a", "woo"];
      .filter((str) => console.log(!str)) //[true, false, false, false, false]
}

끝.
profile
<>{...}</>

0개의 댓글