알고리즘
-
알고리즘) 프로그래머스 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 합니다. 모든 도시를 방문할 수 없는 경우는 주어지지 않습니다. ..
-
알고리즘) 프로그래머스 DFS/BFS, 단어 변환알고리즘/프로그래머스 고득점 Kit 2020. 4. 21. 15:20
프로그래머스 고득점 Kit - DFS/BFS 단어 변환 문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 hit, target가 cog, words가 [hot,dot,dog,lot,log,cog]라면 hit -> hot -> dot -> dog -> cog와 같이 4단계를 거쳐 변환할 수 있습니다. 두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 tar..
-
알고리즘) 프로그래머스 DFS/BFS, 네트워크알고리즘/프로그래머스 고득점 Kit 2020. 4. 21. 15:02
프로그래머스 고득점 Kit - DFS/BFS 네트워크 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨터의 개수 n은 1이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1인 정수로 표현합니다. i번 컴퓨터..