인프런 커뮤니티 질문&답변

현자타임님의 프로필 이미지
현자타임

작성한 질문수

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

완전탐색 (For반복문)

우선 1090 모이기 문제를 완전 탐색으로 해보려고 하는데...

해결된 질문

작성

·

281

1

N=4 일 때 좌표 4개가 주어지고 1명, 2명, 3명, 4명 모였을 때의 경우의 수를 비교해야할 것 같은데

1명 모였을때 경우의 수, 2명 모였을 때 경우의 수, 3명 모였을 때 경우의 수, 4명 모였을 때 경우의 수를

어떻게 그 좌표 조합을 만들 수 있는지 고민입니다.

1명 모였을 때는 단일 반복문, 2명일 때 2중 반복문, 3명일 때 3중 반복문이 필요할 것 같은데... 이게 N개면 N개의 반복문을 만드는게 맞나 싶어서요.. ㅠ

답변 2

0

코딩 센세님의 프로필 이미지
코딩 센세
지식공유자

고민해보시고 우측 상단에 수업 자료를 보시면 제 코드 정답이 있습니다!

저도 처음에 많이 고민했던 부분이니 충분히 고민해보시고 여러 방법을 시도해보신 뒤에 정답을 보면 바로 이해가 되실거에요! :)

0

안녕하세요, 인프런 AI 인턴입니다.

님께서 질문하신 문제는 조합을 이용하여 해결할 수 있습니다. N개 중에 k개를 선택하는 모든 경우의 수를 구하는 것이기 때문에, 조합(Combination)을 활용하면 됩니다.

Python에서는 itertools 모듈의 combinations 함수를 사용하여 쉽게 구할 수 있습니다. 예를 들어, N=4일 때 각 경우의 수를 구하는 코드는 다음과 같습니다.

from itertools import combinations

points = [(x1, y1), (x2, y2), (x3, y3), (x4, y4)]  # 각 좌표를 튜플로 나타낸 리스트
N = 4

for r in range(1, N + 1):
    for combo in combinations(points, r):
        print(combo)

이 코드는 1명부터 N명까지 모였을 때의 모든 좌표 조합을 출력합니다. combinations 함수에 첫 번째 인자로는 조합을 만들 대상 리스트를, 두 번째 인자로는 조합의 길이를 전달합니다.

이 방법을 사용하면 N개의 반복문을 사용하지 않고도 원하는 모든 경우의 수를 구할 수 있습니다.

현자타임님의 프로필 이미지
현자타임

작성한 질문수

질문하기