목록Algorithm/Hash (3)
우노
문제 링크 https://www.acmicpc.net/problem/1351 풀이 해당 문제는 DP 또는 Hash로 해결할 수 있습니다. 해당 포스트에선 Hash를 사용한 해결 방법을 다루고 있으며, n번째 값을 딕셔너리에 저장하는 재귀 함수를 통해 해결할 수 있습니다. 코드 import sys n, p, q = map(int, sys.stdin.readline().split()) # 딕셔너리 선언 dict = {} dict[0] = 1 def solution(n): # n번째 값이 저장되어있다면, 그대로 반환 if (n in dict): return dict[n] # n번째 값이 저장되어있지 않다면, n번째 값을 계산 및 저장한 뒤, 반환 else: dict[n] = solution(n//p) + so..
문제 링크 https://www.acmicpc.net/problem/9375 풀이 참고 의상을 한 개만 걸치고 있어도 알몸이 아닙니다. 같은 종류의 의상은 하나만 입을 수 있습니다. 주어진 의상으로 만들 수 있는 조합의 개수가 정답이 됩니다. 따라서, 주어진 의상에 대한 조합의 개수는 아래와 같이 계산할 수 있습니다. ( a 의상의 종류 수 + 1 ) * ( b 의상의 종류 수 + 1 ) * ( c 의상의 종류 수 + 1 ) … -1 각 의상의 종류 수에 +1을 해준 이유는, 해당 의상을 착용하지 않는 경우도 포함하기 위함입니다. 마지막에 -1을 해준 이유는, 모든 의상을 착용하지 않은 경우는 제외하기 위함입니다. 코드 import sys t = int(sys.stdin.readline()) for _ ..
문제 링크 https://www.acmicpc.net/problem/13414 풀이 중복 신청된 학번은 뒤로 밀린다는 것을 고려해, 수강신청이 들어온 순서대로, 학번과 순서를 딕셔너리에 Key, Value 형식으로 저장합니다. 해당 방식을 통해, 중복 신청된 학번의 순서는 자연스럽게 커지게 됩니다. 이후, 순서를 기준으로 오름차순 정렬한 뒤, 학번을 제한 인원만큼 출력하면 됩니다. 추가적으로, 제한 인원보다 신청 인원이 적을 경우에는, 제한 인원을 신청 인원과 동일하게 수정합니다. 코드 import sys k, l = map(int, sys.stdin.readline().split()) # 수강신청이 들어온 순서대로 학번과 순서를 딕셔너리에 Key, Value로 저장 dict = {} for i in r..