알고리즘/프로그래머스 고득점 Kit
-
프로그래머스 Lv.2) 기능 개발 (Stack&QUEUE)알고리즘/프로그래머스 고득점 Kit 2020. 6. 1. 18:14
기능 개발 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 �� programmers.co.kr 풀이 아침에 머리를 깨우기 위해 레벨 2부터 한 문제 풀고 시작하려고 문제를 봤는데, 새로운 문제가 없어서 풀었던 문제를 다시 풀었다. 키자마자 예전에 짰던 코드를 지우고, 새롭게 코드를 짜보았다. 전보다 더 효율적으로 코드를 짜서 행복했다 ㅎㅎㅎㅎ 하지만, 오늘 아침에 짠 코드보다 더 효율적인 코드가 있을 것이라고 생각한다. 아무튼, 블로그에 올린 적이 없던 문제기 때문에 기억을 최대한 살려 설명하겠습니다. 코드 1 = 처음 풀었을 때 ..
-
알고리즘) 프로그래머스 Graph, 사이클 제거알고리즘/프로그래머스 고득점 Kit 2020. 5. 1. 15:37
프로그래머스 고득점Kit - Graph 사이클 제거 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 노드의 사이즈를 돌면서 하나씩 제거하고 사이클이 있는지 없는지 체크했다. 결과적으로 정확성 테스트는 다 맞지만, Cycle을 확인하는 메소드를 재귀로 호출하여 효율성은 다 틀린 것 같다. 이후 이 문제를 푼 분들의 로직을 보면서 가장 매력적인 로직을 찾아냈다. 전체 노드의 갯수 -1 개가 되면 사이클이 없다는 것이다. 다만, 컴포넌트의 갯수가 1개가 아닌 2개~n개일 때는 컴포넌트의 갯수도 같이 세줘야 한다는 것이다. 이 로직에 따라 코드를 짜봤지만, ..
-
알고리즘) 프로그래머스 Graph, 순위알고리즘/프로그래머스 고득점 Kit 2020. 4. 27. 16:14
프로그래머스 고득점 Kit - Graph 순위 풀이 (2020.04.27) 문제의 조건에서 경기 결과에 모순이 없으며, A>B, B>C 이면 항상 A>B>C의 순서가 매겨진다고 되어있다. 따라서, 경기 결과가 유실되어도 특정 선수(A)가 이긴 상대들은 A를 이긴 상대들이 이길 수 있다는 뜻이다. 경기 결과 입력 후, 서로 상관관계에 따라 입력을 해주고 랭킹을 부여할 수 있는 선수들을 찾아 return했다. 1. 전체 경기 결과를 이긴 상대 리스트, 진 상대 리스트에 담아준다. (선수 Index에 맞춰서) 2. 서로 경기 결과에 대해 이기고 진 상대들을 업데이트 해준다. 3. 경기 결과가 모두 있는 선수들은 Rank를 부여할 수 있으므로, 전체 경기 결과가 있는 선수들의 수를 return해준다. (2020..
-
알고리즘) 프로그래머스 Graph, 가장 먼 노드알고리즘/프로그래머스 고득점 Kit 2020. 4. 25. 15:50
프로그래머스 고득점 Kit - Graph 가장 먼 노드 풀이 2020.04.25) 그래프를 이용해 푸는 문제다. 이에 LinkedList와 PriorityQueue(우선순위 큐)를 이용해 BFS로 문제를 풀었다. 마지막 depth의 노드 수를 구하는 것이기 때문에 BFS가 적절하다고 생각됐다. 1. 루트인 1부터 시작해서 연결된 노드를 탐색한다. 2. 우선순위 큐에 depth를 기준으로 정렬해서 BFS 탐색을 할 수 있도록한다. 이때, visit을 남겨서 depth를 설정할 수 있게 도왔다. 3. depth별로 노드의 수를 세면서, depth가 깊어질 때마다 노드의 수를 0으로 초기화 시켜줬다. 4. 마지막 depth에서 while문을 탈출하면서 노드의 수를 센 result가 return될 수 있게 설정..
-
알고리즘) 프로그래머스 BinarySearch, 징검다리알고리즘/프로그래머스 고득점 Kit 2020. 4. 25. 15:35
프로그래머스 고득점 Kit - Binary Search(이분 검색, 이진 검색) 징검다리 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 이분 검색에서 mid값은 문제에서 요구하는 답으로 설정하는 것이 기본이다. 이 문제에서 원하는 답은 n개의 바위를 제거한 뒤 각 지점 사이의 거리의 최솟값이다. 따라서 left와 right, mid는 거리로 설정한다. 1. 돌위치를 돌면서 이전 돌과 거리를 비교한다. 2. 구한 거리가 가정 답안인 mid보다 작으면 최솟값이 mid가 될 수 없으므로 돌을 제거해준다. (counting을 해줌) 3. 거리가 크거나 같다..
-
알고리즘) 프로그래머스 BinarySearch, 입국심사알고리즘/프로그래머스 고득점 Kit 2020. 4. 24. 00:37
프로그래머스 고득점 Kit - Binary Search(이분 검색, 이진 검색) 입국심사 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 이분 검색에 대한 이해가 완전히 되지 않아서 다른 분들의 로직을 보고, '아! 이렇게 하는거였지' 느꼈다.. 갈길이 아직도 멀다... 제한사항 입국심사를 기다리는 사람은 1명 이상 1,000,000,000명 이하입니다.각 심사관이 한 명을 심사하는데 걸리는 시간은 1분 이상 1,000,000,000분 이하입니다.심사관은 1명 이상 100,000명 이하입니다. 제한사항을 따로 적은 이유는 주로 데이터 타입과 대략적인 ..
-
알고리즘) 프로그래머스 BinarySearch, 예산알고리즘/프로그래머스 고득점 Kit 2020. 4. 24. 00:06
프로그래머스 고득점 Kit - Binary Search(이분 검색, 이진 검색) 예산 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr (2020.04.24) 풀이1 이진 탐색(Binary Search)라는 생각없이 푼 풀이다. 사실 문제를 보고 이진 탐색을 써야지!! 이런 느낌이 안들어서 자연스럽게 푼 문제다. 로직은 아주 간단하다. 1. 예산의 액수에 따라 오름차순으로 도시를 정렬해준다. 2. 남은 예산으로 평균을 구했을 때 해당 도시의 예산 요청액이 더 적으면 허가해준다. 3. 만약, 요청한 예산이 남은 예산을 나눠줄 수 있는 금액보다 크다면 남은 총액..
-
알고리즘) 프로그래머스 DFS/BFS, 여행경로알고리즘/프로그래머스 고득점 Kit 2020. 4. 21. 15:36
프로그래머스 고득점 Kit - DFS/BFS 여행경로 문제 설명 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 ICN 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3개 이상 10,000개 이하입니다. tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다. 주어진 항공권은 모두 사용해야 합니다. 만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다. 모든 도시를 방문할 수 없는 경우는 주어지지 않습니다. ..