옹알이 (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"가 한 번씩만 등장합니다. - 문자열은 알파벳 소문자로만 이루어져 있습니다.
function solution(babbling) {
let result = 0;
let checkWord = ['aya', 'ye', 'woo', 'ma'];
let catchWord;
for (let i = 0; i < babbling.length; i++) {
catchWord = babbling[i]
for (let j = 0; j < checkWord.length; j++) {
catchWord = catchWord.replace(checkWord[j], "1");
}
catchWord = catchWord.replaceAll("1", "");
if (catchWord === "") result += 1;
}
return result;
}
// 다른 풀이 방법
function solution(babbling) {
var answer = 0;
const regex = /^(aya|ye|woo|ma)+$/;
babbling.forEach(word => {
if (regex.test(word)) answer++;
})
return answer;
}
아직 풀이에 대해 글로 표현하기 어렵다.
좀 더 살펴보고, 해석 글을 작성하겠다.
<다른 풀이 방법>
정규 표현식을 활용한 풀이
-- (정규표현식에 대한 공부를 마친 후, 링크를 달자)
등수 매기기
영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 2차원 정수 배열 score가 주어질 때, 영어 점수와 수학 점수의 평균을 기준으로 매긴 등수를 담은 배열을 return하도록 solution 함수를 완성해주세요.
- 0 ≤ score[0], score[1] ≤ 100
- 1 ≤ score의 길이 ≤ 10
- score의 원소 길이는 2입니다.
- score는 중복된 원소를 갖지 않습니다.
function solution(score) {
let answer = [];
let ranking = 1;
for(let i = 0; i < score.length; i++) {
for(let j = 0; j < score.length; j++) {
if((score[i][0] + score[i][1]) < (score[j][0] + score[j][1])) ranking++;
else if((score[i][0] + score[i][1]) === (score[j][0] + score[j][1])) continue;
}
answer.push(ranking);
ranking = 1;
}
return answer;
}
// 다른 풀이 방법
function solution(score) {
return score.map((el) => {
return (
score.filter((v) => (v[0] + v[1]) / 2 > (el[0] + el[1]) / 2).length + 1
);
});
}
이차원 배열이므로, 반복문을 2번 순회하도록 작성하였다.
배열 score의 요소의 총점(score[i][0] + score[i][1])을 비교하였을 때, 랭킹(ranking)이 1씩 증가한다. 즉, 2등-3등 이 되는 것이다. 그리고 점수가 같을 경우에는 같은 순위이므로 ranking이 증가하지 않는다.
각 요소를 순회 비교한 결과에 따른 순위를 배열 answer에 담고, ranking을 다시 1로 초기화한다. 반복문을 돌면서 ranking이 값이 변경됐기 때문에 해줘야 하는 작업이다.
<다른 풀이 방법>
깔끔 그 자체...
'코딩테스트 > 프로그래머스 0단계 - 입문' 카테고리의 다른 글
프로그래머스 0단계 입문 - 다음에 올 숫자 / A를 B로 만들기 (0) | 2024.04.26 |
---|---|
프로그래머스 0단계 입문 - 문자열 밀기 / 숨어있는 숫자의 덧셈 (2) (1) | 2024.04.26 |
프로그래머스 0단계 입문 - 치킨 쿠폰 / 이진수 더하기 (0) | 2024.04.24 |
프로그래머스 0단계 - Day20 수학, 시뮬레이션, 문자열, 사칙연산 (0) | 2024.03.24 |
프로그래머스 0단계 - Day19 문자열, 배열, 조건문 (0) | 2024.03.23 |
댓글