Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- DART
- 플러터
- 현대sw
- 코테
- aws
- 스위프트
- MVVM
- 소프티어
- programers
- 아마존 웹 서비스
- GDSC
- 프로그래머스
- 코틀린
- 다트
- 알고리즘
- baekjoon
- 안드로이드
- kotlin
- java
- Flutter
- Android
- 머신러닝
- 백준
- 개발
- 파이썬
- Python
- 자바
- VSCode
- softeer
- SWIFT
Archives
- Today
- Total
조준장 개발자 생존기
[baekjoon] 백준 6603번(파이썬): 로또 본문
문제
6603번: 로또
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로
www.acmicpc.net
알고리즘
- 백 트래킹 문제로 탐색한 로또 번호인지 확인하고 탐색하지 않았다면 탐색 후 경우의 수 idx에 추가한다.
코드
import sys
def lotto(idx, num):
# 6개의 로또 번호 경우의 수를 찾았다면 결과를 출력하고 리턴
if idx == 6:
print(*res)
return
# 반복문을 통해 로또 집합을 확인
for i in range(num, k):
# 탐색하지 않은 로또 번호라면 탐색
if not visited[i]:
res[idx] = s[i] # 경우의 수에 현재 로또 번호를 추가
visited[i] = True # 탐색
lotto(idx + 1, i + 1) # 재귀적으로 탐색
visited[i] = False # backTracking
# 반복문을 통해 테스트 케이스를 입력 받음
while True:
n = list(map(int, sys.stdin.readline().split()))
# 테스트 케이스가 0이면 반복을 멈춤
if n[0] == 0:
break
k = n[0] # 로또 집합의 개수
s = n[1:] # 로또 집합
visited = [False] * k # 로또 번호는 한번만 사용 가능하기 때문에 사용여부 확인
res = [0] * 6 # 경우의 수
lotto(0, 0)
print()
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1018번(파이썬): 체스판 다시 칠하기 (0) | 2022.03.06 |
---|---|
[baekjoon] 백준 8911번(파이썬): 거북이 (0) | 2022.02.16 |
[baekjoon] 백준 4948번(파이썬): 베르트랑 공준 (0) | 2022.02.14 |
[baekjoon] 백준 4307번(파이썬): 개미 (0) | 2022.02.13 |
[baekjoon] 백준 2529번(파이썬): 부등호 (0) | 2022.02.12 |