안녕하세요
프로그래머스 JS [옹알이 (1)] 본문
- 옹알이 (1)
문제 설명
제한사항
입출력 예babblingresult
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ babbling의 길이 ≤ 100
- 1 ≤ babbling[i]의 길이 ≤ 15
- babbling의 원소에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
- 문자열은 알파벳 소문자로만 이루어져 있습니다.
입출력 예babblingresult
["aya", "yee", "u", "maa", "wyeoo"] | 1 |
["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] | 3 |
풀이 해설 1. babbling의 원소에서 옹알이 발음은 각각 최대 한 번씩 등장한다는 제한사항이 있습니다.
2. babbling의 원소의 길이에서 pronunciation이 존재한다면 해당 발음의 길이만큼을 빼줍니다.
3. babbling 원소의 길이가 0이라면 가능한 발음입니다. ex)
(ayaye의 길이 5) - (aya의 길이 3) - (ye의 길이 2) = (남은 발음 없음 0) 발음 가능
(uuuma의 길이 5) - (ma의 길이 2) = (남은 uuu의 길이 3) 발음 불가능
|
제출한 답 function solution(babbling) {
const pronunciation = ["aya", "ye", "woo", "ma"];
let count = 0;
for (let i = 0; i < babbling.length; i++) {
let length = babbling[i].length;
for (let j = 0; j < pronunciation.length; j++) {
// 발음이 존재한다면 해당 발음의 길이만큼 length에서 빼줍니다. if (babbling[i].indexOf(pronunciation[j]) !== -1) {
length -= pronunciation[j].length;
}
}
if (length === 0) {
count++;
}
}
return count;
}
|
조건문 코드를 더 짧게 쓰고 싶다면...
if (length === 0) {
count++;
}
⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇ |
for (let i = 0; i < babbling.length; i++) {
let length = babbling[i].length;
for (let j = 0; j < pronunciation.length; j++) {
if (babbling[i].indexOf(pronunciation[j]) !== -1) {
length -= pronunciation[j].length;
}
}
!length && count ++
}
0은 판별식에서 false와 같이 취급되기 때문에 length === 0 일 때 length === false와 같고 length 자체가 false로 취급됩니다. 즉 !length === 1 일 때 !length === true !legnth 자체가 true로 취급됩니다. 따라서 !length 로 적어주면 true가 됩니다. 그리고 &&에는 => (true) && (오른쪽실행) 위와 같은 기능이 있습니다. !length 자체가 true이기 때문에 오른쪽의 count++ 코드를 실행합니다. |
'프로그래머스 > Lv.0' 카테고리의 다른 글
프로그래머스 JS [특정한 문자를 대문자로 바꾸기] (0) | 2023.06.16 |
---|