프로그래머스, 자바스크립트) 주사위 게임 3

2024. 6. 7. 14:12·개발/알고리즘(코딩테스트)

문제

https://school.programmers.co.kr/learn/courses/30/lessons/181916?language=javascript

 

프로그래머스

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

programmers.co.kr

 

풀이

주사위값을 key, 해당 주사위 값의 갯수를 value로 객체를 만든다. 

function solution(a, b, c, d) {
  //{주사위값 : 갯수}로 정리
  const diceValue = [a, b, c, d].reduce((acc, cur) => {
    acc[cur] = acc[cur] ? acc[cur] + 1 : 1;
    return acc;
  }, {});

  return diceValue;
}

객체로 변환한 결과

 

그 다음 이 객체를 이용해서 조건에 맞는 값을 구해 반환해준다.

function solution(a, b, c, d) {
  //{주사위값 : 갯수}로 정리
  const dice = [a, b, c, d].reduce((acc, cur) => {
    acc[cur] = acc[cur] ? acc[cur] + 1 : 1;
    return acc;
  }, {});

  // 주사위 value 순으로 정렬
  const diceValue = Object.keys(dice).sort((a, b) => dice[b] - dice[a]);

  //주사위값이 4개가 같은 경우
  if (dice[diceValue[0]] === 4) return Number(diceValue[0]) * 1111;

  //세개가 같고 하나가 다른 경우
  if (dice[diceValue[0]] === 3) return Math.pow(Number(diceValue[0]) * 10 + Number(diceValue[1]), 2);

  //두개씩 같고 다른 경우
  if (dice[diceValue[0]] === 2 && dice[diceValue[1]] === 2) return (Number(diceValue[0]) + Number(diceValue[1])) * Math.abs(Number(diceValue[0]) - Number(diceValue[1]));

  //두개만 같고 나머지가 다른 경우
  if (dice[diceValue[0]] === 2) return Number(diceValue[1]) * Number(diceValue[2]);

  //모두 다른 경우 가장 작은 key값을 리턴
  return Number(diceValue[0]);
}

 

저작자표시 비영리 변경금지 (새창열림)

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

프로그래머스, 자바스크립트) 정수를 나선형으로 배치하기  (0) 2024.06.16
프로그래머스, 자바스크립트) 안전지대  (0) 2024.06.09
프로그래머스, 자바스크립트) 분수의 덧셈  (0) 2024.06.06
프로그래머스, 자바스크립트) 연속된 수의 합  (0) 2024.06.06
프로그래머스, 자바스크립트) 다음에 올 숫자  (0) 2024.05.16
'개발/알고리즘(코딩테스트)' 카테고리의 다른 글
  • 프로그래머스, 자바스크립트) 정수를 나선형으로 배치하기
  • 프로그래머스, 자바스크립트) 안전지대
  • 프로그래머스, 자바스크립트) 분수의 덧셈
  • 프로그래머스, 자바스크립트) 연속된 수의 합
빔네모
빔네모
console.log("빔네모")
  • 빔네모
    bimnemo("개발")
    빔네모
  • 전체
    오늘
    어제
    • 기록 (163) N
      • 기술 (50) N
        • JavaScript (8)
        • TypeScript (9)
        • React.js (14) N
        • Next.js (0)
        • 라이브러리,도구 (4)
        • HTML,CSS (4)
        • CS (5)
        • BE (4)
        • 테스트 (2)
      • 개발 (99)
        • 프로젝트 (0)
        • 트러블슈팅 (5)
        • 알고리즘(코딩테스트) (94)
      • 정보 (4)
      • 취미 (10)
        • 독서기록 (10)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
빔네모
프로그래머스, 자바스크립트) 주사위 게임 3
상단으로

티스토리툴바