[Java]Programmers 에어컨

출처 에어컨 접근 문제 분석 에어컨을 켜서 온도를 설정하거나, 끄면서 차량의 온도를 조절하는데 최소의 비용이 들 수 있도록 해야 합니다. 탑승객이 존재할때만 온도가 유지되면 됩니다. 시간복잡도 분석 온도의 범위는 -10 <= temperature <= 40로, 전체 범위를 확인하는데 많은 시간복잡도가 필요하지 않습니다. 전체 탑승객의 정보(시간)인 onboard의 길이는 2 <= onboard.length <= 1,000으로, 전체 시간을 탐색하는데 O(N^3)의 알고리즘까지 사용이 가능합니다. 다만 온도 범위를 모두 탐색하는 것까지 고려하면 O(N^3)이하의 알고리즘이 필요합니다. 대부분의 완전탐색 알고리즘을 통해 문제를 해결할 수 있음을 알 수 있습니다. 공간복잡도 분석 시간복잡도와 마찬가지로, 공간복잡도는 고려하지 않아도 될 정도로 주어진 변수의 범위가 작은 편입니다. 풀이 DP 완전탐색을 구현하기 위해 DP를 사용했습니다. DFS로도 가지치기만 잘하면서 백트래킹하면 시간복잡도 내에 가능할 것으로 보이지만, DP가 구현이 더 쉽고 직관적이기 때문에 DP로 풀이했습니다. ...

2025. 3. 26. · 3 분 · 506 단어 · Leaf

[Java]Programmers 봉인된 주문

출처 프로그래머스 봉인된 주문 접근 문제 분석 알파벳 순으로 정렬된 주문서에서 주어진 숫자(n)에 해당하는 주문서를 찾는 문제입니다. 이 때, 특정 주문(bans)이 삭제되어 있는 상태입니다. 시간복잡도 분석 주어진 숫자는 n = 10^15 인 long 타입의 숫자입니다. 따라서 해당 숫자에서 글자를 가져오는 알고리즘은 O(N)보다 작아야 합니다. 주어진 주문인 bans는 길이가 300,000이하입니다. 또한, 각 주문의 길이는 최대 11입니다. 모든 주문의 알파벳을 비교하기 위해서는 300,000 x 300,000(주문 간 비교) x 11(주문 길이) = 9x10^12 x 11 이므로 시간복잡도가 초과될 가능성이 있습니다. 따라서 전체 주문을 최대 O(NlogN)까지 확인할 수 있습니다. ...

2025. 3. 17. · 3 분 · 527 단어 · Leaf

[Java]Programmers 불량 사용자(2019 카카오 개발자 겨울 인턴십)

출처 Programmers 불량 사용자(2019 카카오 개발자 겨울 인턴십) 접근 문제 분석 주어진 응모자 아이디에서 불량 사용자가 될 수 있는 모든 경우를 탐색하는 완전탐색(Brute Force) 문제입니다. 시간복잡도 분석 주어진 사용자 아이디와 조합의 개수가 n <= 8 이므로, 모든 경우를 선택하는 시간복잡도는 불량 사용자 조합의 크기인 8! = 40,302 가 됩니다. 또한, 모든 사용자와 조합을 각각 1회씩 비교할 경우 시간복잡도는 8 x 8 = 64입니다. 따라서 완전탐색을 구현하기만 하면 시간복잡도는 충분함을 알 수 있습니다. ...

2025. 2. 26. · 3 분 · 471 단어 · Leaf

[Java]Programmers GPS(2017 카카오코드 본선)

출처 프로그래머스 GPS(2017 카카오코드 본선) 접근 문제 분석 오류가 발생한 택시의 경로를 최소한으로 수정하여 정확한 이동 경로를 구하는 문제입니다. 우선, 택시의 이동을 표현하기 위한 그래프 구조가 필요합니다. 문제에서 최소한으로 이동하는 경로를 찾기 위해서는 갈 수 있는 모든 경로에 대해 완전탐색을 수행해야 합니다. 시간복잡도 분석 완전탐색 전체 경우의 수를 BFS 또는 DFS를 활용해서 제한시간 내 목적지까지 갈 수 있는 모든 경로를 찾아서 주어진 경로와의 차이를 비교하는 방법이 있습니다. 이러한 경우, 한 거점에서 다음 거점으로 이동하는 경우의 수는 정점과 연결된 간선(m)만큼 곱해지게 됩니다. 정점(n = 200)과 간선(m = 10,000)이 균일하게 연결된 그래프로 가정하면 한 정점에 연결된 간선의 수가 50개이기 때문에, 전체 경우의 수는 정점 1개에 50개씩 증가하여 O(N) = 50 ^ 200이 됩니다. ...

2025. 2. 18. · 4 분 · 704 단어 · Leaf

[Java]Programmers 자물쇠와 열쇠(2020 KAKAO BLIND RECRUITMENT)

출처 Programmers 자물쇠와 열쇠(2020 KAKAO BLIND RECRUITMENT) 접근 문제 분석 주어진 자물쇠와 열쇠를 이동시키고 돌려서 맞출 수 있는지 확인하는 문제입니다. 열쇠 혹은 자물쇠를 돌리는 로직과, 이동시키는 로직을 구현하면 됩니다. 문제에서 주어진 열쇠보다 자물솨의 크기가 작기 때문에, 자물쇠를 이동시키고 돌리는 식으로 구현하는 것이 더 효율적입니다. 모든 칸에 대해서 자물쇠를 돌리면서 맞추고, 이동하는 식으로 완전탐색을 진행합니다. 시간복잡도 분석 자물쇠와 열쇠의 크기는 M <= N <= 20이므로, 전체 칸의 개수는 M^2 <= N^2 <= 400입니다. ...

2025. 2. 10. · 4 분 · 748 단어 · Leaf