Recent Posts
Recent Comments
Archives
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- js
- 코딩테스트
- 모던자바스크립트
- deep dive
- CORS
- 프로젝트 셋팅
- nextjs
- 모던 자바스크립트
- 구글 로그인
- 스파르타코딩클럽
- 소셜 로그인
- 셋팅
- error
- array정적메서드
- 초기셋팅
- 코드카타
- domain
- 티스토리챌린지
- 자주 까먹는
- vercel
- 내일배움캠프
- vscode
- Next
- 리터럴
- useRouter
- 프로그래머스
- React
- git
- 코테
- 오블완
- Today
- Total
파피루스
프로그래머스 코딩테스트, 옹알이(2) (Javascript) 본문
문제 설명 (링크)
머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling 이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
제한 사항
1 ≤ babbling의 길이 ≤ 100
1 ≤ babbling[i]의 길이 ≤ 30
문자열은 알파벳 소문자로만 이루어져 있습니다.
입출력 예
babbling | result |
["aya", "yee", "u", "maa"] | 1 |
["ayaye", "uuu", "yeye", "yemawoo", "ayaayaa"] | 2 |
유의사항
네 가지를 붙여 만들 수 있는 발음 이외에는 어떤 발음도 할 수 없는 것으로 규정합니다. 예를 들어 "woowo"는 "woo"는 발음할 수 있지만 "wo"를 발음할 수 없기 때문에 할 수 없는 발음입니다.
풀이
연속해서 같은 단어를 말할 수 없는 조카가 할 수 있는 옹알이는?
function solution(babblings) {
const words = ["aya", "ye", "woo", "ma"];
return babblings.filter((babbling) => {
let splitWord = babbling;
for (let i = 0; i < words.length; i += 1) {
const word = words[i];
if (babbling.split(word.repeat(2)).length !== 1) { // 연속 체크
return false;
}
splitWord = splitWord.split(word).join(" ").trim();
}
return splitWord.length === 0;
}).length;
}
소감
문제를 읽고 이해한 대로 받아적었던 내 코드.
아무래도 조건들을 주석으로 적는 연습을 해야겠다. 문제 읽고 이해한 대로 코드를 뱉고나니 연속 불가 조건을 까먹었다. 다시 짜면 더 오래 걸릴 것 같아 하나씩 구멍을 메꾸다보니 이지경이다... 다음엔 필수 조건들을 주석으로 적고 시작하면 이런 일이 적지 않을까?
완성 후에 꼭 다른 사람의 코드를 보고 있는데, 저것도 내것이였으면 좋겠다는 욕심이 든다. 그 사람의 코드를 다 읽고 IDE에 같은 문제를 다시 한번 풀어보는 것도 재밌다. 좋은 코드의 생각을 따라가다보면 언젠간 내것이 되겠지.
function solution(babbling) {
const words = ["aya", "ye", "woo", "ma"];
const results = babbling.map((s) => {
for (let i = 0; i < words.length; i++) {
const array = s.split(words[i]);
const isOver = array.join("*").split("**").length !== 1; // 연속 확인용
if (isOver) { //
break;
}
s = array.join(".");
}
return s;
});
return results.filter((s) => s.replaceAll(".", "").length === 0).length;
}
'Today I Learned' 카테고리의 다른 글
[Javascript] 자주 까먹는 Null 병합 연산자 (??) (0) | 2024.05.10 |
---|---|
[Javascript] 자주 까먹는 Destucturing (0) | 2024.05.10 |
[javascript] Array.concat() (0) | 2024.05.05 |
[javascript] Array.at() (0) | 2024.05.05 |
[javascript] Array.of() (1) | 2024.05.02 |