Algorithm(9)
-
12865(평범한 배낭) - 실패
처음 문제를 보았을 때 가장 먼저 시도한 방법이었다. 요즘 dfs를 사용하는것보다 itertools의 combinations 사용을 시도하고 있어서 메모리 초과가 뜨긴 했지만 정답은 도출이 되기 때문에 포스팅을 해보려 한다. 1. N과 K를 입력받으면 combination활용을 위한 index 리스트를 추가한다. 2. combination을 활용하여 나올수 있는 조합의 모든 경우의 수를 찾아낸다. 3. 각 인덱스를 활용하여 Weight가 초과되는지 초과되지 않는지를 확인한 후 초과되지 않으면 물품의 가치를 계산한다. 4. 물품의 가치가 현재 누적된 가치보다 높을 때 현재 누적된 가치를 최신화한다. 회고. 완전탐색으로 풀이를 하면 해결이 가능하다. import sys from itertools import..
2023.01.04 -
15686-치킨배달(파이썬)
1. 배열을 입력받고 치킨집의 위치와 집의 위치를 각각 chick , house 배열에 저장한다. 2.itertools의 combination을 활용하여 치킨집 n 개 중 r개를 고르는 nCr 을 활용하여 치킨집의 경우의 수를 반복문을 활용하여 각각 arr에 할당하여 반복문을 진행합니다 3. 변수설명 min_dist는 최종적으로 도출될 정답입니다. tot_temp와 비교해서 가장 적은 값이 min_dist가 됩니다. tot_temp는 각 치킨집 Combination에서 도출된 거리의 총합입니다. temp의 값이 누적되어 tot_temp가 됩니다. temp는 각 집과 치킨집사이의 거리의 최소값입니다. dist_temp와 비교하여 가장 작은 값이 temp에 저장됩니다. dist_temp는 치킨집과 집의 거리..
2023.01.02 -
메모리 초과(sys.stdin.readline)
답은 계속 정확하게 나오는데 메모리초과 에러가 발생했다. 이유를 찾지 못해서 구글링을 통해 정답을 입력해보았고, input = sys.stdin.readline 이라는 설정이 추가되어있길래 내 코드에 추가해보았더니 메모리초과 오류가 없어지게 되었다. sys.stdin.readline을 사용하는 이유는 python의 input 파일 읽는 속도가 느리기때문에 시간초과, 메모리초과를 방지하기 위해 input() 대신에 sys.stdin.readline() 을 많이 사용한다고 한다. 추가적으로 무한재귀를 방지하기위해 sys.setrecursionlimit 설정을 통해 재귀한계를 정해둔다고 한다.
2023.01.01