프로그래머스, 자바스크립트) 빈 배열에 추가, 삭제하기

2024. 1. 11. 21:53·개발/알고리즘(코딩테스트)

문제

https://school.programmers.co.kr/learn/courses/30/lessons/181860

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

조건을 정리해보자

1. flag[i] 값이 true면 arr[i]을 arr[i]*2번 추가

2. flag[i] 값이 false라면 마지막 arr[i]개의 원소를 제거

 

arr 배열을 돌면서 플래그 값을 검사해 플래그 값이 true인 경우에는, arr[i]의 두배한 수만큼 arr[i]를 추가해준다.

반대로 false인 경우에는 splice를 이용해 잘라내어준다. (slice는 원본을 그대로 유지한채 새 배열을 반환하기때매 사용 불가)

 

합치는 방법을 고민했는데,, fill을 알고있다면 간단히 해결할 수 있는 문제였다.

function solution(arr, flag) {
  const X = [];
  arr.forEach((x, i) => {
    flag[i] ? X.push(...Array(x * 2).fill(x)) : X.splice(-x);
  });
  return X;
}

 

 

다른 풀이

reduce를 이용한 방법. true인 경우 조건에 맞게 추가하고, false인 경우 마지막 배열에서 num만큼 제거한 값을 새로 지정한다.

function solution(arr, flag) {
  return arr.reduce(
    (prev, num, i) =>
      flag[i]
        ? [...prev, ...new Array(num * 2).fill(num)]
        : prev.slice(0, -num),
    []
  );
}
저작자표시 비영리 변경금지 (새창열림)

'개발 > 알고리즘(코딩테스트)' 카테고리의 다른 글

프로그래머스, 자바스크립트) 2차원으로 만들기  (0) 2024.01.14
프로그래머스, 자바스크립트) 가까운 수  (1) 2024.01.11
프로그래머스, 자바스크립트) 세 개의 구분자  (1) 2024.01.11
프로그래머스, 자바스크립트) 문자열 뒤집기  (0) 2024.01.11
프로그래머스, 자바스크립트) 배열 만들기 5  (0) 2024.01.11
'개발/알고리즘(코딩테스트)' 카테고리의 다른 글
  • 프로그래머스, 자바스크립트) 가까운 수
  • 프로그래머스, 자바스크립트) 세 개의 구분자
  • 프로그래머스, 자바스크립트) 문자열 뒤집기
  • 프로그래머스, 자바스크립트) 배열 만들기 5
빔네모
빔네모
console.log("빔네모")
  • 빔네모
    bimnemo("개발")
    빔네모
  • 전체
    오늘
    어제
    • 기록 (143)
      • 기술 (36)
        • JavaScript (1)
        • TypeScript (9)
        • React.js (10)
        • Next.js (0)
        • 라이브러리,도구 (3)
        • HTML,CSS (4)
        • CS (5)
        • BE (4)
      • 개발 (95)
        • 프로젝트 (0)
        • 트러블슈팅 (5)
        • 알고리즘(코딩테스트) (90)
      • 정보 (4)
      • 취미 (8)
        • 감상 (8)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
빔네모
프로그래머스, 자바스크립트) 빈 배열에 추가, 삭제하기
상단으로

티스토리툴바