jiho_bae
Go devlog
jiho_bae
전체 방문자
오늘
어제
  • 분류 전체보기 (158)
    • JavaScript (38)
      • theory (34)
      • vanilla (4)
    • HTML & CSS (2)
    • Browser (3)
    • CS (6)
      • linux (1)
      • shell (2)
      • compiler (2)
    • DS & Algorithm (87)
      • theory (5)
      • basic (7)
      • programmers (30)
      • baekjoon (45)
    • Design Pattern (2)
    • Error (4)
    • Git & Github (4)
    • Tools (1)
    • 부트캠프 (4)
    • Small Tips (2)
    • Java (3)
    • test (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바스크립트 모듈 시스템
  • 자바스크립트 비동기 마이크로 태스크 큐와 렌더링 과정
  • 계수정렬 자바스크립트
  • 퀵정렬 자바스크립트
  • 프로그래머스 숫자카드나누기 javascript
  • 25632 소수 부르기 게임
  • safari invalid date error
  • 가사 검색 자바스크립트
  • 깃 이전 커밋에서 새 브랜치 만들기
  • 리액트 프로젝트 디버깅하기
  • 억억단을 외우자 javascript
  • 병합정렬 자바스크립트
  • 리코쳇 로봇 javascript
  • JavaScript
  • 카카오 코딩테스트 양궁대회 nodeJS
  • 13460 javascript nodejs
  • 덧칠하기 javascript
  • 자바스크립트 배열의 특수함
  • javascript use strict
  • fetch 취소하기
  • 외벽 점검 javascript
  • 자바스크립트 채팅방 스크롤
  • 1753 최단경로 javascript
  • 대충만든자판 javascript
  • 자바스크립트 커링
  • 자바스크립트 sort는 왜 그모양일까
  • 백준 자바스크립트 입력 템플릿
  • safari Date format NaN
  • 백준 17406 nodeJS
  • 자바스크립트 이벤트 위임

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
jiho_bae

Go devlog

[백준] 6603번 로또 - JavaScript(NodeJS)
DS & Algorithm/baekjoon

[백준] 6603번 로또 - JavaScript(NodeJS)

2021. 6. 5. 19:03

문제

 

6603번: 로또

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

www.acmicpc.net

 

풀이

 

입력으로 여러 테스트 케이스가 주어지고,
각 테스트 케이스마다 로또 번호를 선택한다.

 

로또 번호는 각 테스트 케이스마다 집합 S에서 6개를 뽑은 숫자의 집합이며 모든 경우의 수를 출력해주면 된다.

즉, 각 테스트 케이스마다 N개 중 6개를 뽑는 조합을 모두 모두 나열하면 된다.

 

입력이 아래와 같이 주어지므로,

첫 번째 수를 변수 N으로 선언하고, 배열 S에 뽑을 수 있는 로또 번호들을 담아 진행한다.

 

크게 어렵지 않으므로 바로 코드를 보자.

코드

const sol = (input) => {
  let idx = 0;
  let answer = "";

  while (input[idx].length !== 1) { 
    const [N, ...S] = input[idx++].split(" ").map(Number); 

    function dfs(V, pick) {
      if (pick.length === 6) {
        answer += `${pick.join(" ")}\n`;
        return;
      }
      for (let i = V; i < N; i++) { 
        dfs(i + 1, [...pick, S[i]]); 
        // spread operator를 사용해서 기존의 pick배열에 선택한 원소를 추가해 다음 재귀로 전달
      }
    }
    dfs(0, []);
    answer += "\n";
  }
  return answer;
};

// 백준에서 입력을 받는 코드
const input = [];
require("readline")
  .createInterface(process.stdin, process.stdout)
  .on("line", (line) => {
    input.push(line);
  })
  .on("close", () => {
    console.log(sol(input));
    process.exit();
  });

저작자표시

'DS & Algorithm > baekjoon' 카테고리의 다른 글

[백준] 14225번 부분수열의 합 - JavaScript(NodeJS)  (0) 2021.06.05
[백준] 1182번 부분수열의 합 - JavaScript(NodeJS)  (0) 2021.06.05
[백준] 14889 스타트와 링크 - JavaScript(NodeJS)  (0) 2021.06.04
[백준] 14888번 연산자 끼워넣기 - JavaScript(NodeJS)  (0) 2021.06.04
[백준] 1339번 단어 수학 - JavaScript(NodeJS)  (0) 2021.06.04
    'DS & Algorithm/baekjoon' 카테고리의 다른 글
    • [백준] 14225번 부분수열의 합 - JavaScript(NodeJS)
    • [백준] 1182번 부분수열의 합 - JavaScript(NodeJS)
    • [백준] 14889 스타트와 링크 - JavaScript(NodeJS)
    • [백준] 14888번 연산자 끼워넣기 - JavaScript(NodeJS)
    jiho_bae
    jiho_bae
    하루에 한 걸음씩

    티스토리툴바