코딩 테스트/Baekjoon

S2 6603. 로또

  • -
728x90
반응형

문제 보기 :  6603번: 로또


문제

  • 정답률 : 55%


작성 코드

while True:
    arr = input()  # 입력을 받음

    if arr == "0":  # 입력이 "0"이면 종료
        break

    arr = list(map(int, arr.split()))  # 입력을 공백으로 분리하여 정수 리스트로 변환
    n = arr.pop(0)  # 첫 번째 값을 n으로 설정하고 리스트에서 제거

    # 중복 없는 조합 생성 함수
    def combinations(n, new, c):
        answer = []
        if len(new) == n:  # 조합의 길이가 목표(n)에 도달하면 반환
            return [new]
        for i in range(c, len(arr)):  # 현재 인덱스(c)부터 반복
            answer.extend(combinations(n, new + [arr[i]], i + 1))  # 다음 단계로 이동
        return answer

    # 조합 생성 및 출력
    ls = combinations(6, [], 0)  # 길이가 6인 조합 생성
    for a in ls:
        print(' '.join(map(str, a)))  # 조합을 공백으로 구분하여 출력
    print()  # 각 테스트 케이스 사이에 빈 줄 출력

풀이

1. 입력을 반복해서 받으며, 각 입력을 공백으로 나눠 정수 리스트로 변환한다.

2. 첫 번째 숫자는 리스트에서 제거하고, 나머지 숫자로부터 길이가 6인 조합을 생성한다.

3. 조합 생성은 재귀적으로 진행하며, 현재 조합의 길이가 6이 되면 결과에 추가한다.

4. 생성된 모든 조합을 순회하며 공백으로 구분해 출력한다.

5. 각 테스트 케이스 사이에는 빈 줄을 출력하며, 입력이 "0"이면 프로그램을 종료한다.

320x100
728x90

'코딩 테스트 > Baekjoon' 카테고리의 다른 글

G5 9251. LCS  (0) 2024.12.31
S2 16953. A → B  (0) 2024.12.31
S3 15657. N과 M (8)  (0) 2024.12.30
S1 1991. 트리 순회  (0) 2024.12.29
S2 9020. 골드바흐의 추측  (2) 2024.12.27
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.