Level 0) 문자열, 배열, 사칙연산, 수학, 조건문

Doozuu·2023년 1월 10일
0

프로그래머스 (JS)

목록 보기
14/183

📌 문제 1. 컨트롤 제트

따로 filtering 하는 함수를 만들어서 적용하려고 했는데, Z가 여러개일 때 이전 값이 자꾸 제거가 안되는 문제가 생겼다.
ex)
"10 Z 20 Z 1" -> 1 이 되어야 하는데 20이랑 1이 출력됨.
"10 Z 20 Z" -> 0이 되어야 하는데 20이 출력됨.

function solution(s) {
    let arr = s.split(" ");
    function filtering(value){
        let fromIndex = arr.indexOf("Z");
        while(fromIndex != -1) {  
          return value !== arr[fromIndex] && value !== arr[fromIndex -1]
          fromIndex = arr.indexOf("Z", fromIndex+1);
        }
    }
     arr.includes("Z") === true ? arr.filter(filtering) : arr
     return arr.map(n => Number(n)).reduce((acc,cur) => acc + cur)
}

splice( )를 이용하니 간단하게 해결되었다.

function solution(s) {
    let a = s.split(" ");
    while(a.includes("Z")){
        a.splice(a.indexOf("Z")-1, 2)
    }
    return a.map(n => Number(n)).reduce((acc,cur) => acc + cur, 0)
}

split(" ")

: 공백 기준으로 자르기

includes(value)

: 특정 값을 포함하는지 확인(T/F)

splice(index,count)

: 특정 index부터 ~개 만큼 자르기

indexOf(value)

: 특정 값의 index를 반환

⚠️주의

reduce할 때 0 안적어주면 배열이 비어있을 때 오류가 나므로 0을 꼭 적어준다.



📌 문제 2. 배열 원소의 길이

하나씩 길이를 세서 새로운 배열에 담아준다.

function solution(strlist) {
    var answer = [];
    strlist.map(item => answer.push(item.length));
    return answer;
}

아래처럼 축약해도 된다.

function solution(strlist) {
    return strlist.map(item => item.length);
}


📌 문제 3. 중복된 문자 제거

Set을 통해 중복되는 요소를 제거하고 spread operator를 통해 배열로 바꾼 후 문자열로 바꾸어 주었다.

function solution(my_string) {
    let arr = my_string.split('');
    let set = new Set(arr);
    let newArr = [...set];
    return newArr.join('')
}

코드 축약 (split 하지 않고 바로 넣어도 됨)

function solution(my_string) {
    return [...new Set(my_string)].join('');
}

⭐️ 중복 제거 하는 방법 3가지

  1. Set
  2. indexOf, filter
  3. forEach, includes
  1. indexOf, filter
function solution(my_string) {
    let arr = my_string.split('');
    return arr.filter((element, index) 
    => arr.indexOf(element) === index);
}
  1. forEach, includes
function solution(my_string) {
    let arr = my_string.split('');
    let answer = []; 
    return arr.forEach((element) => 
     if(!arr.includes(element)) {
      answer.push(element);
    })
}


📌 문제 4. 삼각형의 완성조건(1)

다양한 풀이가 가능하지만, 저번에 배운 구조분해를 이용해서 각 변의 길이를 구해주고 삼항연산자를 통해 삼각형이 될 수 있는지 판정했다.

function solution(sides) {
    let [a, b, c] = sides.sort();
    return a+b > c ? 1 : 2;
}
profile
모든게 새롭고 재밌는 프론트엔드 새싹

0개의 댓글