-
Notifications
You must be signed in to change notification settings - Fork 2
1주차 모범 답안 #8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
역시 알고리즘 왕 손선생님... |
import itertools #permutation을 사용하기 위함입니다.
def cal(h, o): #연산자의 순열대로 숫자를 계산하는 함수입니다.
res = nums[0]
for i in range(0,len(o)):
if o[i] == '0': #덧셈
res += nums[i+1]
elif o[i] == '1': #뺄셈
res -= nums[i+1]
elif o[i] == '2': #곱셈
res *= nums[i+1]
elif o[i] == '3': #나눗셈 (규칙에 맞게 경우를 나눠서 계산합니다.)
if res < 0:
res = -((-res)//nums[i+1])
else:
res = res//nums[i+1]
h.append(res) #계산 결과를 기억합니다.
n = int(input())
nums = list(map(int, input().split()))
ops = list(map(int, input().split()))
perm = [] #연산자의 순열들을 기억하는 리스트입니다.
#아래 for문은 갯수로 주어진 연산자들을 각 갯수대로 나열합니다.
for i in range(0, 4):
for j in range(0, ops[i]):
perm.append(str(i))
#위 for문에서 완성한 연산자가 나열된 리스트의 원소들을 이용해 가능한 모든 순열을 perm에 저장합니다.
perm = list(map(''.join, itertools.permutations(perm, len(perm))))
history = [] #각 순열에 해당하는 연산 결과를 저장하는 리스트입니다.
#위에서 만든 순열 리스트의 중복되는 순열을 제거하기 위해 한번 집합으로 바꿨다 돌려줍니다.
perm_set = set(perm)
perm = list(perm_set)
#각 순열의 연산자 순서대로 계산하도록 함수를 호출합니다.
for i in range(len(perm)):
cal(history, perm[i])
#끝!
print(max(history))
print(min(history)) |
허걱 ㅋㅋㅋ 연산자 문제 설마 브루트포스일까 했는데 ㄱ-... |
하노이의 탑 일반항 유도과정이 궁금하신 분들은 제 브랜치 1-week1/2 에 있는 General Clauses를 참고하시면 되겠습니다 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
개요
모범 답안
1. 숫자 카드 게임
문제 보기
정답 : 13명
손현수
counting을 이용한 풀이
박진수
정렬을 이용한 풀이
2. 하노이의 탑
문제 보기
정답 : 14명
손현수
일반항을 계산한 풀이
심규진
점화식을 계산한 풀이
전현준
재귀를 이용한 풀이
3. 연산자 끼워넣기
문제 보기
정답 : 12명
윤창목
permutation을 이용한 풀이
전현준
브루트포싱을 이용한 풀이
4. 징검다리 건너기
문제 보기
정답 : 8명
황지원
binary search를 이용한 풀이
손현수
세그먼트 트리를 이용한 풀이
5. 도둑질
문제 보기
정답 : 8명
박민재
dp를 이용한 풀이
정산
모범 답안 작성 후 해설 작성시
모범 답안 채택 갯수 시상
에 우대합니다(동점자 발생시). 모범 답안 선정되신 분들은 다른 학우분들이 코드를 보고 공부하실 수 있도록 해설 남겨주시면 감사드리겠습니다.코드에 주석으로 달아주신 분들은 해설을 작성해주신것으로 간주하겠습니다. 물론 추가 해설을 작성해주시면 너무 감사드립니다.
해설은 본 이슈에 계속 달아주세요!
모범 답안 및 해설에 대한 질문이 있으신 분들도 여기에 같이 남겨주시면 좋을 것 같습니다. 슬랙 #dcomding 채널을 이용해주셔도 좋습니다.
The text was updated successfully, but these errors were encountered: