알고리즘/프로그래머스 카카오
-
카카오 블라인드 2021) 합승 택시 요금알고리즘/프로그래머스 카카오 2021. 3. 7. 18:12
합승 택시 요금 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 플로이드-와샬을 이용해서 쉽게 풀 수 있었다. 주어진 각 구간마다의 요금을 플로이드-와샬을 통해, 연결된 구간을 이동하는데 최소 비용을 저장해주었다. 이후, 문제에서 요..
-
카카오 블라인드 2021) 순위 검색알고리즘/프로그래머스 카카오 2021. 3. 7. 18:07
순위 검색 new ArrayList()).add(score); } } for(Map.Entry entry : map.entrySet()) { entry.getValue().sort(null); } return map; } private int getCounts(Map map, String query) { String[] queryCondition = getCondition(query.replaceAll(DEFAULT, NOTHING).replaceAll(QUERY_REGEX, SPACE)); String key = getKey(queryCondition); int score = Integer.parseInt(queryCondition[SCORE_INDEX]); List list = map.getOrDef..
-
카카오 블라인드 2021) 메뉴 리뉴얼알고리즘/프로그래머스 카카오 2021. 3. 7. 17:54
문제 해석을 잘못해서 푸는데 오래걸렸다. 세트 메뉴의 갯수가 같을 때, 주문한 수가 가장 많은 세트로 답을 구해주어야 한다. 처음에는 반대로 주문한 수가 많은 것들을 모아서, 세트 메뉴가 가장 많은 것을 답으로 리턴해주었다.. 이외에도, 주문받은 메뉴를 정수형 배열의 인덱스에 저장하며, 입력받은 course에 따라 리턴해주는 방법도 시도했었지만, 당연히 틀리는 방법이다. (문제 해석을 잘못해서 카운팅만 해주면 된다고 생각했었다.. ㅠ) 각설하고, 여러 차례 시도했는데 계속 틀려서 카카오 해설 힌트를 보고 permutation을 적용했다. 이 때, 미리 메뉴를 정렬해서 하는 방법이 더욱 효율적이겠지만, 처음에 비트마스크로도 접근을 했었어서, 이 코드를 지우기 아까워서 재활용했다. (효율적인 방법이라고는 말..
-
카카오 블라인드 2021) 신규 아이디 추천알고리즘/프로그래머스 카카오 2021. 3. 7. 17:41
신규 아이디 추천 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 문제 조건 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 아이디가 카카오 아이디 규칙에 맞는 지 검사하고 규칙에 맞지 않은 경우 규칙에 맞는 새로운 아이디를 추천 1단계 new_id의 모든 대문자..
-
프로그래머스 Lv.3) [1차] 셔틀버스알고리즘/프로그래머스 카카오 2020. 6. 2. 21:33
2018 KAKAO BLIND RECRUITMENT 셔틀버스 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 [23:59,23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59] 18:00 programmers.co.kr 풀이 카카오 문제 중, 추석 트래픽을 풀 때 시간 문자열을 int형으로 변환하여 푼 경험 덕분인지 쉽게 풀었다. 우선, timetable에 저장된 시간 문자열을 시간과 분에 따라 int형으로 값을 저장해주었다. (시간 * 60 + 분) 이후, 문제 예제를 보면 앞서 줄 서있는 사람이 있더라도 시간이 버스 출발 시간마다 꽉 채워 타는 것이 아닌 경우가 있..
-
프로그래머스 Lv.3) 길 찾기 게임알고리즘/프로그래머스 카카오 2020. 6. 2. 21:19
2019 KAKAO BLIND RECRUITMENT 길 찾기 게임 코딩테스트 연습 - 길 찾기 게임 [[5,3],[11,5],[13,3],[3,5],[6,1],[1,3],[8,6],[7,2],[2,2]] [[7,4,6,9,1,8,5,2,3],[9,6,5,8,1,4,3,2,7]] programmers.co.kr 풀이 우선 순위 큐를 통해 Node의 순서를 정해주려 했다. 하지만, compareTo 메소드를 잘못 설정해서인지, 아니면 우선순위큐가 지닌 unstable한 정렬 때문인지 제대로 순차 저장이 되지 않았다. 그래서 다른 분들은 어떻게 해결했는지 찾아보았다. 배열에 대해 Arrays의 sort를 이용하며, Comparator를 통해 정렬하는 방법으로 푼 글을 보았다. 그래서 바로 배열로 만들기로 결정..
-
프로그래머스 Lv.3) 리틀 프렌즈 사천성알고리즘/프로그래머스 카카오 2020. 5. 28. 23:01
2017 카카오코드 본선 리틀 프렌즈 사천성 코딩테스트 연습 - 리틀 프렌즈 사천성 리틀 프렌즈 사천성 언제나 맛있는 음식들이 가득한 평화로운 푸드 타운. 푸드 타운에서 행복하게 사는 리틀 프렌즈들은 마을에 있는 매직 스푼을 보물처럼 보관하고 있다. 매직 스푼은 재료만 programmers.co.kr 풀이 문제를 꼼꼼히 읽지 못해서 푸는데 많은 삽질과 시간을 투자했다.. 첫번째로 간과한 부분은 경로는 두 개 이하의 수평/수직 선분으로 구성되어 있고, 이들은 모두 연결되어 있다. (즉, 경로를 한 번 이하로 꺾을 수 있다) 참고: 프렌즈 사천성은 경로가 세 개 이하의 선분으로 구성되어야 한다는 점이 다르다. (즉, 경로를 두 번 이하로 꺾을 수 있다) 선분이 3개 이하일 경우 블록을 제거할 수 있다고 생각..
-
프로그래머스 Lv.3) 보행자 천국알고리즘/프로그래머스 카카오 2020. 5. 27. 22:57
2017 카카오코드 예선 보행자 천국 코딩테스트 연습 - 보행자 천국 3 3 [[0, 0, 0], [0, 0, 0], [0, 0, 0]] 6 3 6 [[0, 2, 0, 0, 0, 2], [0, 0, 2, 0, 1, 0], [1, 0, 0, 2, 2, 0]] 2 programmers.co.kr 풀이 DP 문제임을 눈치 챘고, DP로 풀기위해 노력했다. 하지만, 눈치챈 것 이상도 이하도 아니었다. DP임을 알고도 어떻게 해야할지 감이 안잡혔기 때문이다.. 처음에는 2차원 배열 DP를 만들어 x축과 y축이 각각 0인 좌표들에 통행 금지 표지판을 만나기 전까지 1을 저장해주었다. (y=0일 때, x를 증가하면서 저장, x=0일 때, y를 증가시키면서 저장) 하지만, 나중에 회전 불가 표지판을 만날 때 어떤 경로..