🔒 문제 🧠 아이디어 톱니바퀴 회전 아이디어 시계 방향 반시계 방향 자료구조로 덱 사용 회전 방향을 결정하는 것은 index2, 6 🔑 Kotlin Code import java.io.BufferedReader import java.io.InputStreamReader import java.util.* import kotlin.collections.ArrayDeque private fun rotateGears(gearNum: Int, gears: Array, gearRotateDirection: IntArray) { when (gearRotateDirection[gearNum]) { -1 -> { gears[gearNum].addLast(gears[gearNum].removeFirst()) } 1 -> ..
알고리즘
🔒 문제 🧠 아이디어 1. 월-일을 모두 Days (일) 로 통일 1월 1일-> 1 12월 31일 -> 365 로 치환한다. 이를 위해 HashMap 을 생성하여 각 월마다 일수를 매핑시켜주었다. private final HashMap monthDayMap = new HashMap(); { monthDayMap.put(0, 0); monthDayMap.put(1, 31); monthDayMap.put(2, 28); monthDayMap.put(3, 31); monthDayMap.put(4, 30); monthDayMap.put(5, 31); monthDayMap.put(6, 30); monthDayMap.put(7, 31); monthDayMap.put(8, 31); monthDayMap.put(9, 3..
🔒 문제 🧠 아이디어 그래프상 간선과 정점이 주어지고 시작점 - 목적지 - 간선비용을 입력받는 전형적인 최소 비용 경로 문제. 단 경로 과정을 모두 킵해야 하므로 다익스트라 알고리즘 상에서 특정 지점에 도착하기 직전 지점을 배열에 담아 보관하고 시작점에 도달하기 까지 목적지로부터 거꾸로 출력해내기만 하면 되겠다. 🔑 Kotlin Code import java.io.BufferedReader import java.io.InputStreamReader import java.lang.StringBuilder import java.util.* import kotlin.collections.ArrayList fun dijkstra(startVertexNum: Int, distances: Array, preVert..
🔒 문제 💡 생각의 흐름 1,2,4 3개의 숫자만으로 한 자리씩 표현 총 자릿수는 3^N + 3^N-1 + 3^N-2 .... 3^0 => N+1 의 문자열 길이를 갖는다. 군 내에서 N번째 숫자를 3^N * n + 3^N-1 * n ... N+1 만큼 loop을 돌고 n을 이어붙이면 된다고 생각했다. 먼저, 10진수 -> 124나라의 숫자가 바로 생각나지 않으니 124나라의 숫자 -> 10진수변환을 곱씹어 보았다. 예를들면 10진수 '241' 3^2 * 2 + 3^1 * 4 + 3^0 * 1 >[0단계] 3마다 단위가 바뀌는 걸로 봐서 3진법!!!!!?!?!?! 근데 숫자 0과 4를 따로 처리해야겠네? [1단계] 124나라의 숫자의 길이 == 3^1 + 3^2 + 3^3 + .... 3의 제곱수의 누적..
문제 실수 대놓고 서로 다른 '조합'의 수를 구하는 문구에서 기계적으로 Combination을 떠올렸다. 옷의 갯수 까지의 모든 Combination 조합을 합하면 답이 도출되지 않을까? 하고 생각했다. 예를 들어 위의 예제대로 하면 얼굴(2) - 상의(1) - 하의(1) - 겉옷(1) 5C1 + 5C2 - 1(얼굴 2개만 뽑는 경우의수 ) + 5C3 - 3 (얼굴 2개 + 나머지 1조합 경우의수) + 5C4 - 3 (얼굴 2개 + 2개 조합 경우의수) ------ 이런 식으로하니 일반식이 도출되지 않았다. 아이디어 조합의 수를 구하라 했지만 옷을 하나이상 걸친 모든 경우의 수를 구하는 문제였다. 각 옷의 종류마다 옷을 입는 경우의 수를 나눠서 표현하면 얼굴 -> 입지 않음 , 동그란 안경 , 검정 선글..
1. 문제 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr ⭐ 카카오 2019 블라인드 공개채용 기출문제 2. 실수 loop을 2번 중첩했다가 시간초과로 75점을 맞았다. loop 2중첩 시나리오는 다음과 같았다. 아이디 - 닉네임이 매핑되어야 한다는 사실로부터 (1) 중복을 제거한 아이디 목록 Set (집합) (2) Set element 수 == 회원수 만큼 loop (3) (2) loop 안에서 record 로그 수만큼 또 loop (2) + (3) => Time Complexity O(N^2) => 시간..