일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 영문법
- 알고리즘
- TOEIC Vocabulary
- 자바스크립트
- 자료해석
- 공기업공부
- 매일매일NCS
- dfs
- BFS
- BOJ
- 토익문법정리
- 토익단어
- 토익시험준비
- sqld
- 문제해결능력
- 브루트포스
- 영단어
- 토익문법노트
- 데이터베이스
- TOEIC
- 파이썬
- 너비우선탐색
- 영어문장
- 주어
- 영단어암기
- NCS수리자료해석
- 수리능력
- TOEIC문법
- 다이나믹프로그래밍
- 토익 영단어
- Today
- Total
하나씩 알아가기
[BOJ_2309] 일곱 난쟁이 본문
틀린 부분이 있을 경우, 지적해 주시면 감사하겠습니다.
아홉 개의 input이 들어오는데 이 중 두 개의 input은 fake고, 일곱 개의 input의 합이 100인 것들만 오름차순으로 출력하면 되는 간단한 문제입니다.
브루트 포스(Brute Force)
조합 가능한 모든 문자열을 하나씩 대입해 보는 방식으로 문제를 해결하는 방법
브루트 포스라 이름은 거창한데 원시적인 방법으로 문제를 풀어야 할 경우 사용하는 것 같습니다. 그런데 모든 문제에서 사용되지 않나요?.. 사실 이런 용어가 잘 와닿지는 않네요ㅠ 조금 더 내공이 쌓이면 어떤 경우에 브루트 포스 방법이 사용되는 지 파악이 되는 날이 오면 좋겠네요
문제로 돌아와서 9개의 데이터 중 2개의 데이터만 뽑아서 100이 되면 출력하는 식으로 문제를 풀겠습니다.
itertools라는 라이브러리가 있는데 파이썬에서 반복되는 데이터를 처리하는 기능을 포함하고 있습니다.
이것을 사용하면 조합이나 순열을 구하는 클래스를 import하여 사용할 수 있습니다.
두 난쟁이를 뽑는 경우는 순서를 고려하지 않으므로 combinations를 import 하였습니다.
일곱 난쟁이의 키를 합한 값이 100이면 출력할 result에서 해당 난쟁이들을 remove로 삭제 해주고
정렬해서 출력하면 됩니다.
from itertools import combinations
people = []
for _ in range(9):
people.append(int(input()))
combList = list(combinations(people, 2))
for x, y in combList:
result = sum(people) - x - y
if result == 100:
people.remove(x)
people.remove(y)
people.sort()
break
for person in people:
print(person)
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
'알고리즘' 카테고리의 다른 글
[BOJ_3085] 사탕 게임 (0) | 2021.01.24 |
---|---|
[BOJ_1476] 날짜 계산 (0) | 2021.01.24 |
[BOJ_15990] 1, 2, 3 더하기 5 (0) | 2021.01.23 |
[BOJ_9095] 1, 2, 3 더하기 (0) | 2021.01.22 |
[BOJ_11727] 2xn 타일링 2 (0) | 2021.01.22 |