FE코크
탄산 가득 시원한 개발일지
FE코크
전체 방문자
오늘
어제
  • 분류 전체보기 (43)
    • 우아한테크코스 (22)
      • 우아한테크코스4기 (4)
      • 우아한테크코스3 (10)
      • 회고록 (8)
    • Web (0)
      • HTTP 웹 기본지식 (0)
    • JavaScript (2)
    • React.js (12)
    • 알고리즘 풀이 (2)
    • HTML, CSS (4)
    • 기타 (1)
      • 일상 (0)
      • 후기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • react.js
  • 4기
  • JavaScript
  • 우테코
  • 코어자바스크립트
  • 재택하고싶은데
  • 우아한테크코스 3기
  • 프론트엔드
  • 우아한테크코스
  • jsx
  • 노마드코더
  • 회고
  • react
  • 백준
  • Reactjs
  • 알고리즘
  • 개발자
  • Props
  • createRoot
  • 레벨1회고
  • 회고록
  • prop drilling
  • 자바스크립트
  • 주간회고
  • 프리코스
  • CSS
  • React.DOM
  • 우테코4기
  • 리액트
  • state

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
FE코크

탄산 가득 시원한 개발일지

[백준 6630, NodeJS] 로또
알고리즘 풀이

[백준 6630, NodeJS] 로또

2021. 1. 22. 21:28

www.acmicpc.net/problem/6603

 

6603번: 로또

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로

www.acmicpc.net

백준 6603 로또 문제 풀이입니다

재귀, 백트래킹, 순열로 풀었습니다.

문제
독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다.
로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다.
예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34])
집합 S와 k가 주어졌을 때, 수를 고르는 모든 방법을 구하는 프로그램을 작성하시오.

 

풀이

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
const len = input.length;
const LOTTO_COUNT = 6;

const getLottoCase = (input) => {
  const maxCount = input[0];
  const sets = input.slice(1);
  let result = "";

  const permute = (arr, m = [], i = 0) => {
    if (m.length === LOTTO_COUNT) {
      result += `${m.join(" ")}\n`;
    } else {
      for (i; i < arr.length; i++) {
        let current = arr.slice();
        let next = current.splice(i, 1);
        permute(current.slice(), m.concat(next), i);
      }
    }
  };

  permute(sets);
  return result;
};

for (let i = 0; i < len - 1; i++) {
  console.log(getLottoCase(input[i].split(" ").map((n) => Number(n))));
}

'알고리즘 풀이' 카테고리의 다른 글

[백준 1759, NodeJS] 암호만들기  (0) 2021.01.19
    '알고리즘 풀이' 카테고리의 다른 글
    • [백준 1759, NodeJS] 암호만들기
    FE코크
    FE코크
    공부한 내용을 적는 블로그

    티스토리툴바