티스토리 뷰
반응형
😅 문제
https://www.acmicpc.net/problem/6603
🤔 문제 상황
- k개 숫자들이 있는 집합에서 로또번호를 뽑기 위해 6개의 번호를 추출하는 경우를 모두 출력한다.
🧐 해결 전략
- 백트래킹을 사용해야하지만 나는 내장함수 combinations를 사용했다.. 백트래킹으로도 풀어봐야한다.
🎰 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# main 함수 만들때 import는 안에다 써주어야 한다.
def main():
from sys import stdin
from itertools import combinations
testcase = []
while True:
n = list(map(int, stdin.readline().split()))
testcase.append(n)
if n == [0]:
break
for t in range(len(testcase)):
if testcase[t] == [0]: # 입력값이 0 이면 함수 종료
return
else :
r = testcase[t][0] # 몇개 뽑을 지
n = testcase[t][1:]
result = list(combinations(n,6)) # combination 결과는 튜플, 오름차순으로 나온다.
for i in range(len(result)):
print(' '.join(list(map(str, result[i]))))
print()
if __name__ == '__main__':
main()
|
cs |
🧙♂️ 해설
- combinations로 쉽게 해결하였다..
📈 새로 학습한 것 & 실수
- combinations 함수는 결과를 튜플로 오름차순으로 내보낸다. 이 때문에 결과물을 sort하면 튜플이라 불가능하다. 이를 리스트로 바꾸려면 요소를 일일이 바꿔주어야 한다.
- if name main에서 나는 name에도 ""가 들어가는줄 알았지만 main에만 들어간다.
- main을 def로 선언할 때 import를 바깥에서 선언하면 동작하지 않는다. 함수 안에서 선언해야한다.
- k, *s = list(map(int, input().split())) 로 선언하면 첫번째 값만 k가 되고 나머지는 리스트로 s가 된다. (요소가 2개일경우 *가 없어도 되지만 3개 이상이면 s자리에 2개 이상의 요소가 들어가야하므로 크기가 정해지지 않았다는 표시로 *이
필요하다.
반응형
'알고리즘 학습 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 - 영화감독 숌 (1436) [Python] (0) | 2020.09.20 |
---|---|
백준 알고리즘 - 계단 오르기 (2579) [Python] (0) | 2020.08.28 |
백준 알고리즘 - 가장 큰 증가 부분 수열(11055번)[Python] (0) | 2020.05.01 |
백준 알고리즘 - 정수 삼각형(1932번)[Python] (0) | 2020.04.30 |
백준 알고리즘 - 피보나치 함수(1003번)[Python] (0) | 2020.04.30 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- django
- filter#isalnum#lower
- 섬의개수#백준알고리즘#Python
- 토마토#백준알고리즘#Python
- Distinct#Codility#Python
- NumberofDiscIntersections#Codility#Sort#Python
- 백준 알고리즘#BackTracking
- 순열사이클#BOJ#Python
- PassingCars#Codility#Python
- 파이썬알고리즘인터뷰#4장
- 암호코드#dp#BOJ#Python
- 나무자르기#BOJ#이분탐색#Python
- 쿼드트리#BOJ#분할정복#Python
- Triangle#Sorting#Codility#Python
- 미로 탐색#백준알고리즘#Python
- Brackets#Stacks and Queues#Codility#Python
- N으로 표현#DP#Programmers#Python
- 랜선자르기#이분탐색#BOJ#Python
- 공유기 설치#BOJ#이분탐색#Python
- 날짜 계산#BOJ#완전탐색#Python
- 반복수열#백준알고리즘#Python
- 터틀비치#리콘#xbox#controller
- 종이자르기#분할정복#BOJ#Python
- API#lazy#
- 병든 나이트#BOJ#탐욕법#Python
- 배열합치기#분할정복#BOJ#Python
- 리모컨#완전탐색#BOJ#Python
- Swift#Tuples#Range
- 텀 프로젝트#백준알고리즘#Python
- django#slicing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함