PS/Programmers
-
타겟 넘버PS/Programmers 2022. 3. 31. 17:16
[문제 접근법] - 해당 숫자들로 Target 숫자를 만들 수 있는지 모든 경우의 수를 구하여 그 값을 리턴하면 된다. 아래의 그림 1의 예시로 모든 경우의 수를 구해보자(아래 표 참고) 모든 경우의 수 numbers[0] numbers[1] numbers[2] numbers[3] numbers[4] 총합 +1 +1 +1 +1 +1 5 +1 +1 +1 +1 -1 3 +1 +1 +1 -1 +1 3 +1 +1 +1 -1 -1 1 +1 +1 -1 +1 +1 3 +1 +1 -1 +1 -1 1 +1 +1 -1 -1 +1 1 +1 +1 -1 -1 -1 -1 +1 -1 +1 +1 +1 3 +1 -1 +1 +1 -1 -1 ... ... ... .. .. .. 위의 표처럼 모든 경우의 수를 구하여 총합이 target과 ..
-
네트워크PS/Programmers 2022. 3. 30. 16:44
[문제 접근법] - 트리 탐색 중 깊이 우선 탐색(DFS)을 이용하여 네트워크 개수를 반환하였다. https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr [구현 1] - DFS 탐색 및 중복 방문을 막기 위해(boolean [] visit)을 이용하여 네트워크 개수를 구하였음 searchNetwork 함수가 재귀적으로 깊이 우선 탐색을 한다. package com.codingtest.programmers.lev..
-
[KAKAO] 오픈채팅방PS/Programmers 2022. 3. 30. 15:43
[문제 접근법] - id(key), nickname(value) 인 map을 이용하여 문제를 해결하였다. https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr [구현1] - Leave 액션을 제외한 나머지 액션들에 대해서 id에 해당하는 nickname을 계속 변경하였음. public Map makeAcation(){ Map action=new HashMap(); action.put("Enter","님이 들어왔습니..
-
[Summer/Winter Coding(~2018)] 스킬트리PS/Programmers 2022. 3. 29. 16:42
[문제 접근법] - Topology Sort 개념을 적용하여 해당 스킬의 선행스킬이 먼저 배웠는지 확인하였다. 자세한건 아래 소스코드를 보면서 설명하겟습니다. 토폴로지 정렬이 궁금하다면? 🙄😲 https://m.blog.naver.com/ndb796/221236874984 https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr [구현 1] 1. 선행스킬 그래프와 후행스킬 그래프를 만든다. 2. 스킬트리를 하나씩 루프를 돌아 해당 스킬의 후행 스킬 찾는다. 2-1. 후행 스킬이 존재한다면 후행 스킬의 선행 스킬을 제거한다. 2-2. 후행 스킬이 존재하지 않는다면 어떠한 연산도 하지 않는다. 3. 만약..
-
더 맵게PS/Programmers 2022. 3. 24. 14:23
[문제 접근법] - 최소 힙을 만들어서(우선순위 큐 사용) 최솟값을 하나씩 우선순위 큐에서 꺼낸다. 가장 맵지않은 음식이 K보다 적으면 그림 1처럼 두 번째로 맵지 않은 음식과 섞는다. 그리고 아래 연산을 한 후 다시 최소 힙에 넣는다. 만약 최소 힙의 가장 맵지 않은 음식의 스코빌 값이 K 이상이면 return 하여 끝낸다. https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr [구현 1] 1. 최소..
-
[2021 Dev-Matching] 다단계 칫솔 판매PS/Programmers 2022. 3. 23. 20:12
[문제 접근법] - 맵을 이용 하여 그래프를 만든 후 아래에서부터 위로 탐색하면서(ex. young -> edward -> mary -> center) 비용 정산을 한다. 최적화를 위해 분배되는 금액(이익금의 10%)이 0보다 클 때만 비용 정산을 하도록 접근하였다. https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr [구현 1] 1. 그래프를 만든다 2. seller의 금액을 그룹화시킨다. 3. 깊이 우선..
-
[2021 Dev-Matching] 행렬 테두리 회전하기PS/Programmers 2022. 3. 23. 13:53
[문제 접근법] - 실제 2차원 배열에 대한 구현 능력을 물어보는 문제인거 같다. 나는 큐를 활용하여 시계방향으로 배열을 옮기는 로직을 구현 하였다. 맨위 - 오른쪽 - 맨아래 - 맨왼쪽 순으로 배열을 옮기면서 진행하였음 https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr [구현 1] 1. 2차원 행렬을 만든다 2. 위 - 오른쪽 - 아래 - 왼쪽 순으로 배열을 옮기는 과정을 거침(큐에 이전값..
-
완주하지 못한 선수PS/Programmers 2022. 3. 23. 13:45
https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr [알고리즘 접근 방법] 1. 해쉬 접근법(효율성 평균 41ms=0.041초) -해쉬에 먼저 참가자들을 다 넣는다 -참가자들 중에서 완주자 확인 -미완 주자 출력 //효율성 평균 41ms string solution(vector participant, vector completion) { unordered_map map; //일단 맵에 모든 참..