코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍

코딩기록

알고리즘/백준

6603번 : 로또

2023. 9. 17. 19:29

https://www.acmicpc.net/problem/6603

 

6603번: 로또

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

www.acmicpc.net

 

문제

 

입력

 

출력

각 테스트 케이스마다 수를 고르는 모든 방법을 출력한다. 이때, 사전 순으로 출력한다.

각 테스트 케이스 사이에는 빈 줄을 하나 출력한다.

 


소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    static int k;
    static StringBuilder sb;
    static int[] s;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        sb = new StringBuilder();

        while (true) {
            st = new StringTokenizer(br.readLine());
            k = Integer.parseInt(st.nextToken());
            if(k == 0) break;
            s = new int[k + 1];

            for (int i = 1; i <= k; i++) {
                s[i] = Integer.parseInt(st.nextToken());
            }

            Arrays.sort(s);
            backtrack(0, "", 0);
            sb.append("\n");
        }

        System.out.println(sb);
    }

    static void backtrack(int cnt, String str, int pre) {
        if (cnt == 6) {
            sb.append(str.trim() + "\n");
            return;
        }

        for (int i = pre + 1; i <= k; i++) {
            backtrack(cnt + 1, str + " " + s[i], i);
        }
    }

}

 

해결방법

백 트래킹으로 풀 수 있는 문제이다.

로또 번호를 사전순으로 출력한다. 정렬을 해야 한다.

 

독알 로또는 수 6개를 사용한다. 로또 번호가 6개라면 Stringbuilder에 해당 문지열을 추가한다.

 

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

13975번 : 파일 합치기 3  (0) 2023.09.21
16987번 : 계란으로 계란치기  (0) 2023.09.19
1759번 : 암호 만들기  (0) 2023.09.17
15663번 : N과 M (9)  (0) 2023.09.14
2457번 : 공주님의 정원  (0) 2023.09.13
    '알고리즘/백준' 카테고리의 다른 글
    • 13975번 : 파일 합치기 3
    • 16987번 : 계란으로 계란치기
    • 1759번 : 암호 만들기
    • 15663번 : N과 M (9)
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바