[프로그래머스] "최빈값 구하기": JS - 증가연산자(++)

신혜린·2023년 3월 24일
0

알고리즘(javascript)

목록 보기
4/21
post-thumbnail

참고자료 | [#10][프로그래머스][입문] 최빈값 구하기
, 증가 연산자(++)


프로그래머스 0단계 - 최빈값 구하기

function solution(array) {
  let obj = {};
  let arr = [];
  
  for (let i of array) obj[i] ? ++obj[i] : obj[i] = 1;
  for (let i in obj) arr.push([i, obj[i]]);
  arr.sort((a,b) => b[1] - a[1]);
  
  if (arr.length > 1 && arr[0][1] === arr[1][1]) return -1;
  return Number(arr[0][0]);
};

1. 빈 객체 obj와 빈 배열 arr 만들기

let obj = {};
let arr = [];

2. 각 프로퍼티의 개수를 구해서 값으로 만들기 - {프로퍼티:개수}

for (let i of array) obj[i] ? ++obj[i] : obj[i] = 1;
for (let i in obj) arr.push([i, obj[i]]);

for (let i of array) 구문은 배열 array의 요소를 순회하는 반복문임 -> i 변수에는 배열의 각 요소가 순차적으로 할당된다.
요소의 값이 객체 obj의 프로퍼티로 이미 존재하는지 확인한 후, 존재한다면 해당 프로퍼티의 값을 1 증가시키고, 존재하지 않는다면 해당 요소의 값을 프로퍼티로 추가하고 1로 값을 설정.

예시)
array = [1,2,3,3,6,6,6];인 경우 반환되는 값: { '1': 1, '2': 1, '3': 2, '6': 3 }

증가연산자(++)의 이해

  • a++ : 피연산자 뒤에 연산자를 붙여서 사용한다면 증가 연산자는 수를 증가시키고 증가하기 전 값을 반환함
let x = 3;
const y = x++;
// x = 4
// y = 3
  • ++a : 피연산자 앞에 연산자를 붙여서 사용한다면 증가 연산자는 수를 증가시키고 증가 후 값을 반환함
let x = 3;
const y = ++x;
// x = 4
// y = 4

배열 값에 따라 내림차순 정렬

arr.sort((a,b) => b[1] - a[1]);

sort()를 사용한 배열 내림차순, 오름차순 정렬 방법 참고 -> JavaScript - 배열 오름차순, 내림차순 정렬 .sort()

요소 비교: -1을 반환할지, 최빈값을 반환할지

if (arr.length > 1 && arr[0][1] === arr[1][1]) {
  return -1;
}
  • 만약 배열의 첫 번째 요소와 두 번째 요소의 값이 동일하다면, 해당 배열에 최빈값이 둘 이상 존재하므로 -1을 반환
return Number(arr[0][0]);
  • 그렇지 않은 경우, 배열의 첫 번째 요소의 프로퍼티를 숫자로 변환하여 반환
profile
개 발자국 🐾

0개의 댓글