코딩 테스트/Baekjoon

S3 15657. N과 M (8)

  • -
728x90
반응형

문제 보기 :  15657번: N과 M (8)


문제

  • 정답률 : 81%


작성 코드

n,m = map(int, input().split())
arr = list(map(int, input().split()))  # 입력을 정수 리스트로 변환
arr = sorted(set(arr))  # 중복 제거 및 정렬
arr.sort()

# 중복 없는 조합 생성 함수
def combinations_without_replacement(n,new,c):
    answer = []
    if len(new)==n:
        return [new]
    for i in range(c,len(arr)):
        answer.extend(combinations_without_replacement(n,new+[arr[i]],i))
    return answer

# 조합 생성 및 출력
ls = combinations_without_replacement(m,[],0)
for a in ls:
    print(' '.join(map(str, a)))  # 리스트를 공백으로 구분하여 출력

풀이

1. 입력으로 받은 수를 정수로 변환하고, 중복을 제거한 뒤 정렬하여 사전 순으로 처리하도록 한다.

2. 조합을 생성하기 위해 재귀 함수를 사용하며, 현재까지 생성한 조합과 시작 인덱스를 기반으로 조합을 확장한다.

3. 목표 길이 M에 도달하면 해당 조합을 결과 리스트에 추가하고 반환한다.

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

5. 중복 제거와 정렬된 입력을 사용하여 사전 순으로 출력되도록 보장한다.

320x100
728x90

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

S2 16953. A → B  (0) 2024.12.31
S2 6603. 로또  (0) 2024.12.31
S1 1991. 트리 순회  (0) 2024.12.29
S2 9020. 골드바흐의 추측  (2) 2024.12.27
G5 5430. AC  (0) 2024.12.27
Contents

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

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