From a6e1c2342cfe8b85c779dda0773f625007c87da7 Mon Sep 17 00:00:00 2001 From: MyungJi_Jang Date: Fri, 7 Apr 2023 23:48:13 +0900 Subject: [PATCH 01/12] [ETC]1(week1 2023.04.03) --- day1.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 day1.js diff --git a/day1.js b/day1.js new file mode 100644 index 0000000..e69de29 From e57464a4276801f1a74fa83a6c987ea6ff3c043f Mon Sep 17 00:00:00 2001 From: MyungJi_Jang Date: Fri, 7 Apr 2023 23:49:50 +0900 Subject: [PATCH 02/12] [ETC]2(week1 2023.04.04) --- day2.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 day2.js diff --git a/day2.js b/day2.js new file mode 100644 index 0000000..e69de29 From d5a506e1b3001650ad59fd4923439b38b0feebb6 Mon Sep 17 00:00:00 2001 From: MyungJi_Jang Date: Fri, 7 Apr 2023 23:51:21 +0900 Subject: [PATCH 03/12] [BOJ]2309(week1 2023.04.05) --- day3.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 day3.js diff --git a/day3.js b/day3.js new file mode 100644 index 0000000..e69de29 From c185753ce775eb5f799c284c588a3376848b3ad9 Mon Sep 17 00:00:00 2001 From: MyungJi_Jang Date: Fri, 7 Apr 2023 23:56:42 +0900 Subject: [PATCH 04/12] [ETC]3(week1 2023.04.06) --- day4.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 day4.js diff --git a/day4.js b/day4.js new file mode 100644 index 0000000..ac2ce56 --- /dev/null +++ b/day4.js @@ -0,0 +1,21 @@ +// 선생님이 N(1<=N<=1000)명의 학생을 일렬로 세웠습니다. 일렬로 서 있는 학생의 키가 앞에 서부터 순서대로 주어질 때, 맨 앞에 서 있는 선생님이 볼 수 있는 학생의 수를 구하는 프로그 램을 작성하세요. (앞에 서 있는 사람들보다 크면 보이고, 작거나 같으면 보이지 않습니다.) +// ▣ 입력설명 +// 첫 줄에 정수 N이 입력된다. 그 다음줄에 N명의 학생의 키가 앞에서부터 순서대로 주어진다. +// ▣ 출력설명 +// 선생님이 볼 수 있는 최대학생수를 출력한다. +// ▣ 입력예제 1 +// 8 +// 130 135 148 140 145 150 150 153 +// ▣ 출력예제 1 5 + +function solution(array) { + let answer = 1, + max = array[0]; + for (let i = 1; i < array.length; i++) { + if (array[i] > max) { + answer++; + max = array[i]; + } + } + return answer; +} From 47a4c5441b9f4e1917865dee138d092ecf5976ff Mon Sep 17 00:00:00 2001 From: MyungJi_Jang Date: Sat, 8 Apr 2023 00:04:45 +0900 Subject: [PATCH 05/12] [ETC]4(week1 2023.04.07) --- day5.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 day5.js diff --git a/day5.js b/day5.js new file mode 100644 index 0000000..7a0b12a --- /dev/null +++ b/day5.js @@ -0,0 +1,25 @@ +// 7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고, 고른 홀수들 중 최소값을 찾는 프로그램을 작성하세요. +// 예를 들어, 7개의 자연수 12, 77, 38, 41, 53, 92, 85가 주어지면 이들 중 홀수는 77, 41, 53,85이므로 그 합은77 + 41 + 53 + 85 = 256이 되고,41 < 53 < 77 < 85이므로 홀수들 중 최소값은 41이 된다. +// ▣ 입력설명 +// 첫 번째 줄에 자연수 7개가 주어진다. 주어지는 자연수는 100보다 작다. 홀수가 한 개 이상 반드시 존재한다. +// ▣ 출력설명 +// 첫째 줄에 홀수들의 합을 출력하고, 둘째 줄에 홀수들 중 최소값을 출력한다. +// ▣ 입력예제 1 +// 12 77 38 41 53 92 85 +// ▣ 출력예제 1 +// 256 41 + +function solution(array) { + let answer = []; + let sum = 0, + min = 1000; + for (let x of array) { + if (x % 2 === 1) { + sum += x; + if (x < min) min = x; + } + } + answer.push(sum); + answer.push(min); + return answer; +} From b01dd719ab2c272f024df19c9231ca35ae33522b Mon Sep 17 00:00:00 2001 From: MyungJi_Jang Date: Mon, 10 Apr 2023 22:40:49 +0900 Subject: [PATCH 06/12] =?UTF-8?q?=EB=AA=85=EC=A7=80:[=EC=88=98=ED=95=99]PG?= =?UTF-8?q?S(Week2=202023.04.10)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- day1.js | 13 +++++++++++++ day2.js | 24 ++++++++++++++++++++++++ day3.js | 21 +++++++++++++++++++++ week1/question1.js | 24 ++++++++++++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 week1/question1.js diff --git a/day1.js b/day1.js index e69de29..a1963fe 100644 --- a/day1.js +++ b/day1.js @@ -0,0 +1,13 @@ +// 연필개수 구하기 +// 연필 1 다스는 12자루입니다. 학생 1인당 연필을 1자루씩 나누어 준다고 할 때 N명이 학생수 를 입력하면 필요한 연필의 다스 수를 계산하는 프로그램을 작성하세요. +// - 입력설명 +// 첫 번째 줄에 1000 이하의 자연수 N이 입력된다. +// - 출력설명 +// 첫 번째 줄에 필요한 다스 수를 출력합니다. +//입력예제 25 출력예제 3 + +function solution(n) { + let answer; + answer = Math.ceil(n / 12); + return answer; + } \ No newline at end of file diff --git a/day2.js b/day2.js index e69de29..7e5bad3 100644 --- a/day2.js +++ b/day2.js @@ -0,0 +1,24 @@ +// N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요. 자릿수의 합이 같은 경우 원래 숫자가 큰 숫자를 답으로 합니다. 만약 235 와 1234가 동시에 답이 될 수 있다면 1234를 답으로 출력해야 합니다. +// - 입력설명 +// 첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다. 각 자연수의 크기는 10,000,000를 넘지 않는다. +// - 출력설명 +// 자릿수의 합이 최대인 자연수를 출력한다. +// 입력예제 1 + +function solution(n, arr) { + let answer, + max = Number.MIN_SAFE_INTEGER; + for (let x of arr) { + let sum = x + .toString() + .split("") + .reduce((a, b) => a + Number(b), 0); + if (sum > max) { + max = sum; + answer = x; + } else if (sum === max) { + if (x > answer) answer = x; + } + } + return answer; + } \ No newline at end of file diff --git a/day3.js b/day3.js index e69de29..4d6a4cb 100644 --- a/day3.js +++ b/day3.js @@ -0,0 +1,21 @@ +// 왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다. +// 아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다. +// 아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오. +// - 입력설명 +// 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. +// - 출력설명 +// 입력된 순서대로 일곱 난쟁이의 키를 출력한다. + +function solution(arr) { + let answer = arr; + let sum = answer.reduce((a, b) => a + b, 0); + for (let i = 0; i < 8; i++) { + for (let j = i + 1; j < 9; j++) { + if (sum - (answer[i] + answer[j]) == 100) { + answer.splice(j, 1); + answer.splice(i, 1); + } + } + } + return answer; + } \ No newline at end of file diff --git a/week1/question1.js b/week1/question1.js new file mode 100644 index 0000000..fa6d67b --- /dev/null +++ b/week1/question1.js @@ -0,0 +1,24 @@ +// [프로그래머스 level0] +// 머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요. + +// 제한사항 +// 1 ≤ array의 길이 ≤ 100 +// 1 ≤ height ≤ 200 +// 1 ≤ array의 원소 ≤ 200 + +//내가 푼 방법 => 반복문 사용 +function solution(array, height) { + let answer = 0; + for (let i = 0; i < array.length; i++) { + if (array[i] > height) { + answer++; + } + } + return answer; +} + +//다른 사람 풀이 => filter 사용 +function solution(array, height) { + var answer = array.filter((tall) => tall > height); + return answer.length; +} From eb77245aecaf9dcddea7cb30a14aeee1e6d922cd Mon Sep 17 00:00:00 2001 From: MyungJi_Jang Date: Tue, 11 Apr 2023 11:31:41 +0900 Subject: [PATCH 07/12] =?UTF-8?q?=EB=AA=85=EC=A7=80:[=EC=88=98=ED=95=99]PG?= =?UTF-8?q?S(Week2=202023.04.11)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week1/question1.js | 2 +- week1/question2.js | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 week1/question2.js diff --git a/week1/question1.js b/week1/question1.js index fa6d67b..851cd45 100644 --- a/week1/question1.js +++ b/week1/question1.js @@ -21,4 +21,4 @@ function solution(array, height) { function solution(array, height) { var answer = array.filter((tall) => tall > height); return answer.length; -} +} \ No newline at end of file diff --git a/week1/question2.js b/week1/question2.js new file mode 100644 index 0000000..2f7287b --- /dev/null +++ b/week1/question2.js @@ -0,0 +1,17 @@ +//[프로그래머스 레벨0] +//정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요. +//제한사항 +// 1 ≤ n ≤ 10,000 + +function solution(n) { + let answer = []; + + for (d = 1; d <= n; d++) + if (n % d === 0) { + answer.push(d); + } + return answer; +} + +// 약수 = divisor +//n을 d로 나눈게 0이되면 d는 n의 약수가 되기 때문에 반복문 안에 넣어서 d가 0이되는 애들을 구한 다음 배열 안에 넣어주었다. From 3ab9c6a873930f5fd817918f4e480ab43b6026c9 Mon Sep 17 00:00:00 2001 From: MyungJi_Jang Date: Wed, 12 Apr 2023 22:19:21 +0900 Subject: [PATCH 08/12] =?UTF-8?q?=EB=AA=85=EC=A7=80:[ETC](Week2=202023.04.?= =?UTF-8?q?12)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week1/ECT/question3.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 week1/ECT/question3.js diff --git a/week1/ECT/question3.js b/week1/ECT/question3.js new file mode 100644 index 0000000..8cc8dad --- /dev/null +++ b/week1/ECT/question3.js @@ -0,0 +1,21 @@ +//삼각형 판별하기 (인프런) +// 길이가 서로 다른 A, B, C 세 개의 막대 길이가 주어지면 이 세 막대로 삼각형을 만들 수 있 으면 “YES"를 출력하고, 만들 수 없으면 ”NO"를 출력한다. +// ▣ 입력설명 +// 첫 번째 줄에 100이하의 서로 다른 A, B, C 막대의 길이가 주어진다. +// ▣ 출력설명 +// 첫 번째 줄에 “YES", "NO"를 출력한다. + +//풀이 포커스) 짧은 막대 두 개 합이 가장 긴 막대 실이 보다 커야한다. +function solution(a, b, c) { + let answer = "YES", + max; + let sum = a + b + c; + + if (a > b) max = a; + else max = b; + if (c > max) max = c; + if (sum - max <= max) { + answer = "NO"; + } + return answer; +} From 0d3ace07f9cfeb082df16beb5078b12c69c6e0d4 Mon Sep 17 00:00:00 2001 From: MyungJi_Jang Date: Thu, 13 Apr 2023 23:35:38 +0900 Subject: [PATCH 09/12] =?UTF-8?q?[=EC=88=98=ED=95=99]PGS(Week2=202023.04.1?= =?UTF-8?q?3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week1/{ECT => ETC}/question3.js | 0 week1/question4.js | 43 +++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) rename week1/{ECT => ETC}/question3.js (100%) create mode 100644 week1/question4.js diff --git a/week1/ECT/question3.js b/week1/ETC/question3.js similarity index 100% rename from week1/ECT/question3.js rename to week1/ETC/question3.js diff --git a/week1/question4.js b/week1/question4.js new file mode 100644 index 0000000..ebaff2a --- /dev/null +++ b/week1/question4.js @@ -0,0 +1,43 @@ +// 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. + +// 한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요. + +//제한사항 +// 3 ≤ number의 길이 ≤ 13 +// -1,000 ≤ number의 각 원소 ≤ 1,000 +// 서로 다른 학생의 정수 번호가 같을 수 있습니다. + +function solution(number) { + let answer = 0; + for (let i = 0; i < number.length - 2; i++) { + for (let j = i + 1; j < number.length - 1; j++) { + for (let k = j + 1; k < number.length; k++) + if (number[i] + number[j] + number[k] == 0) answer++; + } + } + return answer; +} + +// i의 인덱스를 고정하고 j와 k를 각각 다음 인덱스로 만들어 세 개를 더했을 때 0이 나오는 값을 찾게 하였다. + +// 다른 사람 풀이 중 탐났던 풀이 +function solution(number) { + let result = 0; + + const combination = (current, start) => { + if (current.length === 3) { + result += current.reduce((acc, cur) => acc + cur, 0) === 0 ? 1 : 0; + return; + } + + for (let i = start; i < number.length; i++) { + combination([...current, number[i]], i + 1); + } + }; + combination([], 0); + return result; +} + +// 서로 다른 사람 3명을 필요로하므로 +// 조합 활용 => 3명이 존재 => 그 합을 구하여 0이면 count++; +// combination 함수 사용 From 7d479e072404b2543de01d826bd752afb6cfad35 Mon Sep 17 00:00:00 2001 From: MyungJi_Jang Date: Fri, 14 Apr 2023 22:35:39 +0900 Subject: [PATCH 10/12] =?UTF-8?q?[=EC=88=98=ED=95=99]=EB=AA=85=EC=A7=80:PG?= =?UTF-8?q?S(Week2=202023.04.14)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week1/question4.js | 2 ++ week1/question5.js | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 week1/question5.js diff --git a/week1/question4.js b/week1/question4.js index ebaff2a..e838dee 100644 --- a/week1/question4.js +++ b/week1/question4.js @@ -1,3 +1,5 @@ +//프로그래머스 레벨1 + // 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. // 한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요. diff --git a/week1/question5.js b/week1/question5.js new file mode 100644 index 0000000..8d126bd --- /dev/null +++ b/week1/question5.js @@ -0,0 +1,41 @@ +// 프로그래머스 레벨 0 + +// 머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요. +//제한사항 +// 1 ≤ array의 길이 ≤ 100 +// 0 ≤ array의 원소 ≤ 100,000 + +// 처음에 생각한 답 +function solution(array) { + let answer = 0; + answer = array.filter((array) => array === 7); + return answer.length; +} + +// 문제점 => 7의 자리별로 계산하지 못함, 계산 값 틀림 + +// 고친 답 +function solution(array) { + let answer = 0; + let string = array.toString(); + + for (i = 0; i < string.length; i++) + if (string[i] === "7") { + answer++; + } + return answer; +} + +//풀이) +//배열을 아예 문자열로 바꿔서 자리 값을 계산해주었다. 7일 일치할때마다 반복문(+ if문)에서 answer값을 +1씩 해주었다. => 개수 구하기 완료. + +// 다른 사람 풀이 참고 + +function solution(array) { + return array + .join() + .split("") + .filter((el) => { + return el === "7"; + }).length; +} From 17aecd88772bda1c893d6a27224849a21b13ede8 Mon Sep 17 00:00:00 2001 From: MyungJi_Jang Date: Sat, 15 Apr 2023 22:06:57 +0900 Subject: [PATCH 11/12] =?UTF-8?q?=EB=AA=85=EC=A7=80:[=EC=88=98=ED=95=99]PG?= =?UTF-8?q?S(Week2=202023.04.15)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week1/question5.js | 1 + week1/question6.js | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 week1/question6.js diff --git a/week1/question5.js b/week1/question5.js index 8d126bd..d82220b 100644 --- a/week1/question5.js +++ b/week1/question5.js @@ -39,3 +39,4 @@ function solution(array) { return el === "7"; }).length; } +// filter를 이용하고 싶으면 이렇게 사용해야함! diff --git a/week1/question6.js b/week1/question6.js new file mode 100644 index 0000000..3bdecfe --- /dev/null +++ b/week1/question6.js @@ -0,0 +1,36 @@ +//프로그래머스 레벨 0 + +//문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요. +// 1 ≤ my_str의 길이 ≤ 100 +// 1 ≤ n ≤ my_str의 길이 +// my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다. + +//처음 푼 풀이 +function solution(my_str, n) { + let answer = []; + for (i = 0; i < my_str.length / n; i++) answer.push(my_str.slice(i, i + n)); + return answer; +} + +//문제점 : 원하는 값으로 잘리지 않음 + +// 테스트 1 +// 입력값 〉 "abc1Addfggg4556b", 6 +// 기댓값 〉 ["abc1Ad", "dfggg4", "556b"] +// 실행 결과 〉 실행한 결괏값 ["abc1Ad","bc1Add","c1Addf"]이 기댓값 ["abc1Ad","dfggg4","556b"]과 다릅니다. +// 테스트 2 +// 입력값 〉 "abcdef123", 3 +// 기댓값 〉 ["abc", "def", "123"] +// 실행 결과 〉 실행한 결괏값 ["abc","bcd","cde"]이 기댓값 ["abc","def","123"]과 다릅니다. + +//옳은 풀이 +function solution(my_str, n) { + const answer = []; + for (i = 0; i < my_str.length; i += n) answer.push(my_str.slice(i, i + n)); + return answer; +} + +// 포인트 +// - 한개씩 증가시키는 것이 아닌 n씩 증가시켜야한다 => 왜냐면 n만큼 잘라야하기 때문에 +// slice()메소드를 사용하여 i부터 i+n까지 잘라 answer배열에 푸시 해주어야한다. +// 이것을 my_str의 길이 만큼 반복해야한다. From c34686c60c07bd563343461ab6b4b2a473213c08 Mon Sep 17 00:00:00 2001 From: MyungJi_Jang Date: Sun, 16 Apr 2023 15:46:48 +0900 Subject: [PATCH 12/12] =?UTF-8?q?=EB=AA=85=EC=A7=80:[=EB=AC=B8=EC=9E=90?= =?UTF-8?q?=EC=97=B4]PGS(Week2=202023.04.16)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- week1/question7.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 week1/question7.js diff --git a/week1/question7.js b/week1/question7.js new file mode 100644 index 0000000..12609cf --- /dev/null +++ b/week1/question7.js @@ -0,0 +1,48 @@ +// 머쓱이는 태어난 지 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 answer = 0; + for (i = 0; i < babbling.length; i++) { + if ( + babbling[i] + .replace("ye", " ") + .replace("aya", " ") + .replace("woo", " ") + .replace("ma", " ") + .trim() == "" + ) { + answer++; + } + } + return answer; +} + +// 다른 풀이 +function solution(babbling) { + var answer = 0; + babbling.forEach((element) => { + if (element.split(/aya|ye|woo|ma/g).join("") === "") { + answer++; + } + }); + return answer; +} + +function solution(babbling) { + var answer = 0; + const regex = /^(aya|ye|woo|ma)+$/; + + babbling.forEach((word) => { + if (regex.test(word)) answer++; + }); + + return answer; +} + +// 문자열은 정규식 표현을 사용하는게 깔끔한 것 같다 ! 빨리 정규식 표현에 익숙해져야겠다!