728x90
반응형
1. 삼각형의 완성조건 (1)
: 삼각형의 세 변의 길이가 담긴 배열 slides가 주어질 때, 삼각형을 만들 수 있으면 1, 없으면 2 반환
(가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 함)
- 내가 짠 코드
// 전
function solution(sides) {
let maxNum = Math.max(...sides);
let sum=0;
for(let i=0; i<sides.length; i++) {
sum = sum + sides[i]
}
if(maxNum < sum-maxNum) {
return 1
} else {
return 2
}
}
// 후
function solution(sides) {
let maxNum = Math.max(...sides);
let sum = sides.reduce((acc, cur) => acc + cur) - maxNum;
console.log(maxNum)
return maxNum < sum ? 1 : 2
}
- solution
function solution(sides) {
sides = sides.sort((a,b) => a-b)
return sides[0]+sides[1] > sides[2] ? 1 : 2;
}
2. 배열의 유사도
: 두 배열이 가진 동일 원소의 개수 반환
- 내가 짠 코드
// 전
function solution(s1, s2) {
let answer = 0
for(let i=0; i<s1.length; i++) {
for(let j=0; j<s2.length; j++) {
if(s1[i] === s2[j]){
answer++
}
}
}
return answer
}
// 후
function solution(s1, s2) {
let similar = 0;
for(let i=0; i<s1.length; i++){
if(s2.indexOf(s1[i]) > -1) {
similar++
}
}
return similar
}
- solution
function solution(s1, s2) {
const intersection = s1.filter((x) => s2.includes(x));
return intersection.length;
}
3. 자릿수 더하기
: 정수 n이 매개변수로 주어질 때, n의 각 자리의 숫자 합 return
- 내가 짠 코드
// 전
function solution(n) {
let answer = 0
var arr = n.toString();
let arr2 = arr.split("")
for(let i=0; i<arr2.length; i++) {
answer = answer + Number(arr2[i])
}
return answer;
}
// 후
function solution(n) {
let str = n.toString();
let answer = 0
for(let i of str) {
answer += Number(i)
}
return answer
}
- solution
function solution(n) {
return (n+'').split('').map(v=>+v).reduce((a,v)=>a+v,0);
}
4. 숨어있는 숫자의 덧셈(1)
: 문자열 내 모든 한 자릿수 자연수의 합 반환
- 내가 짠 코드
// 전
function solution(my_string) {
let arr = my_string.split("");
let arr2 = [];
for(let i=0; i<arr.length; i++){
if(Number(arr[i])) { // 문자는 NaN라서 falsy
arr2.push(Number(arr[i]))
}
}
return arr2.reduce((a, c) => a + c, 0);
}
// 후
function solution(my_string) {
let arr = my_string.split("").filter(el => Number(el))
return arr.reduce((acc, cur) => acc + (+cur), 0)
}
- solution
function solution(my_string) {
const answer = my_string.replace(/[^0-9]/g, '')
.split('')
.reduce((acc, curr) => acc + Number(curr), 0);
return answer;
}
function solution(my_string) {
return my_string.replaceAll(/[^\d]/g, '').split('').map(v=>+v).reduce((a,v)=>a+v,0);
}
// /[0-9]/g : 숫자 0~9를 모두 찾는다
// /[^0-9]/g : 숫자 0~9가 아닌 것을 모두 찾는다
// /[^\d]/g : 숫자(/d)를 제외한 나머지를 모두 찾는다
reference)
정규표현식, 이렇게 시작하자!
매일 쓰는 것도, 가독성이 좋은 것도 아니지만, 모르면 안되는 정규표현식. 저는 이렇게 공부하기 시작했습니다! (자바스크립트를 기준으로 설명합니다)
heropy.blog
5. 문자열 안에 문자열
: 두 개의 문자열 str1, str2가 주어질 때, str2가 str1에 포함되면 1, 포함되지 않으면 2 반환
- 내가 짠 코드
// 전
function solution(str1, str2) {
var answer = str1.match(str2);
if(answer === null) {
return 2
} else {
return 1
}
}
// 후
function solution(str1, str2) {
return str1.match(str2) ? 1 : 2
}
- solution
function solution(str1, str2) {
return str1.split(str2).length > 1 ? 1 : 2
}
728x90
반응형
'자료구조 및 알고리즘 > JavaScript Practice' 카테고리의 다른 글
JS Practice) 프로그래머스로 공부하기 7 (0) | 2023.03.07 |
---|---|
JS Practice) 프로그래머스로 공부하기 6 (0) | 2023.03.06 |
JS Practice) 프로그래머스 : 문자 반복 출력하기 / 중앙값 구하기 / 특정 문자 제거하기 / 짝수는 싫어요 / 순서쌍의 개수 (0) | 2023.03.04 |
JS Practice) 문자열 내 숫자 반환하기 (0) | 2023.03.02 |
JS Practice) 프로그래머스 : 머쓱이 보다 키 큰 사람 / 피자 나눠 먹기(3) / 배열 원소의 길이 / 점의 위치 구하기 / 짝수 홀수 개수 (4) | 2023.02.27 |