백준 19622 - 회의실 배정 3
Computer Science/Problem Solving
문제설명제한사항 및 입출력 풀이문제를 잘 읽어보면 제한사항에 k번째 회의는 k-1, k+1과 겹치지만 다른 회의랑은 겹치지 않는다는 것을 알 수 있다. 해당 조건으로 회의의 시작 시간, 종료 시간은 필요가 없어지는 정보가 된다. 핵심은 인접한 것을 선택하지 못한다는 것이다. 기초적인 dp 문제라고 생각했다. 현재 값을 선택하거나, 선택하지 않거나.dp[i] = i번째 회의까지 진행했을 때 최대 인원상태전이: max(해당 회의를 선택했다면 i-2 + 현재, 해당 회의를 선택하지 않았다면 i-1)내 코드import sysinput = sys.stdin.readlinemis = lambda: map(int, input().split())n = int(input())num = []for _ in range(n)..
프로그래머스 - 피로도
Computer Science/Problem Solving
문제설명 제한사항 및 입출력풀이문제의 제한사항을 확인해보면1 1 으로 제한되어있다. 따라서 모든 던전의 순서를 확인해도 8!이기 때문에 굉장히 작은 것을 알 수 있다. 그러므로 간단하게 permutations을 활용하여 모든 경우의 수를 확인하고 가장 큰 값을 리턴하는 완전탐색으로 구현했다. 내 코드가지 못하는 곳은 break를 해주면서 빠르게 제외시켜주었다. 실제로는 던전의 개수가 8개일 때 8!에 던전의 개수만큼 한 번 더 반복하기 때문에 8! * 8인 것을 확인할 수 있다. 약 32만이라는 작은 숫자이므로 간단하게 통과할 수 있었다. 고찰내가 생각한 코드의 시간복잡도는 O(n * n!)로 매우 크다.던전의 개수가 12개만 넘는다고 해도 5억에 가까운 숫자이므로 완전탐색은 힘들 수 있다. 1. 정렬을..