KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (486)
    • ALGORITHM (11)
      • 정렬 (6)
      • 최단경로 (1)
      • 자료구조 (1)
      • 슬라이딩 윈도우 (1)
      • etc (2)
    • Git (5)
    • Web (24)
      • Vanilla JS (13)
      • TS (2)
      • React (7)
      • ETC (1)
    • React 공식문서 (번역, 공부) (11)
      • Quick Start (2)
      • Installation (0)
      • Describing the UI (9)
      • Adding Interactivity (0)
      • Managing State (0)
      • Escape Hatches (0)
    • Next.js 공식문서 (번역, 공부) (3)
      • Getting Started (2)
      • Building Your Application (1)
    • PS (431)
      • 백준 (187)
      • Programmers (104)
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • Level 2
  • string
  • Level 0
  • LeetCode
  • recursion
  • 정렬
  • 백준
  • Level1
  • 수학
  • codeup
  • 문자열
  • 제코베 JS 100제
  • Level 1
  • C++
  • tree
  • 그래프
  • 다이나믹 프로그래밍
  • C
  • js
  • programmers

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun

Coding Note

PS/백준

백준 / 정렬 / 2587번 / 대표값2 / JS

2023. 2. 5. 22:49

< 문제 바로가기 >

 

2587번: 대표값2

어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 +

www.acmicpc.net

 

const fs = require('fs');
// const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt';
const filePath = process.platform === 'linux' ? '/dev/stdin' : 'BOJ/input.txt';
const input = fs.readFileSync(filePath).toString().trim().split('\n');

const NUMBER_LIST = input.map(Number);

function solution(NUMBER_LIST) {
  let sortedNumberList = [...NUMBER_LIST].sort((a, b) => a - b);

  let avg = 0;
  let median = 0;

  avg = sortedNumberList.reduce((acc, cur) => acc + cur);
  avg /= sortedNumberList.length;

  median = sortedNumberList.at(Math.floor(sortedNumberList.length / 2));

  console.log(avg);
  console.log(median);
}

solution(NUMBER_LIST);

사실 원본 배열이 바뀌어도 문제풀이에 지장이 없지만, 인자로 넘겨준 NUMBER_LIST를 그냥 sort 하게 되면 solution() 함수 바깥에 존재하게 되는 NUMBER_LIST가 바뀌어버린다. 따라서 전개구문을 이용하면 깊은복사를 수행하게 되면서 원래의 값들을 참조하는게 아닌 값들을 복사해서 메모리의 새로운 공간에 올려놓기 때문에 다른 참조값이 된다.

 

하지만 이 전개구문을 사용할때에도 주의점이 있는데, 대상이 1차원 배열일 경우에만 깊은복사가 가능하다는것이다. 2차원 배열은 안에 있는 원소들은 결국 1차원 배열들이다. 배열이라는 의미는 참조값이라는 의미인데, 2차원 배열을 전개할시에 1차원 배열의 참조값을 그대로 가져오므로 결국 원본도 변하게 된다. 따라서 2차원 배열을 복사하고 싶을 경우에는 새로운 배열을 생성 후에 반복문을 통해 각각의 값을 직접 넣어주거나, 안에 있는 요소들에게도 전개구문을 이용해서 복사를 해주어야 한다.

저작자표시 (새창열림)

'PS > 백준' 카테고리의 다른 글

백준 / 이분 탐색 / 1920번 / 수 찾기 / JS  (0) 2023.02.09
백준 / 투 포인터 / 1644번 / 소수의 연속합 / JS  (0) 2023.02.06
백준 / 스택 / 4949번 / 균형잡힌 세상 / JS  (0) 2023.02.04
백준 / 투 포인터 / 2470번 / 두 용액 / JS  (2) 2023.02.02
    'PS/백준' 카테고리의 다른 글
    • 백준 / 이분 탐색 / 1920번 / 수 찾기 / JS
    • 백준 / 투 포인터 / 1644번 / 소수의 연속합 / JS
    • 백준 / 스택 / 4949번 / 균형잡힌 세상 / JS
    • 백준 / 투 포인터 / 2470번 / 두 용액 / JS
    KimMinJun
    KimMinJun

    티스토리툴바