본문 바로가기
반응형

알고리즘7

[알고리즘 / Kotiln] 프로그래머스 - 수식 최대화 (2020 카카오 인턴십) 그동안 조금 공부를 게을리했던 것 같아서 다시 의지를 불태우기 위해 오랜만에 책상에 앉아서 프로그래머스를 들어갔다. 새로운 문제를 풀기보다는 예전에 풀어봤던 정확히는 눈으로 보았던 카카오 인턴십 문제를 다시 풀어보기로 했다. 1년 전에는 풀다가 포기한 문제였는데 다시 풀어보려니 왠지 모르게 긴장이 되었다. 이제부터라도 일주일에 최소 1개의 문제 푸는 습관을 들여야겠다. 수식 최대화 문제 설명 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다. 해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어.. 2022. 2. 8.
[알고리즘] DFS(Depth-First Search) - 깊이 우선 탐색 DFS는 그래프(Graph)를 탐색하는 방법입니다. 그래프란, 정점(node)과 그 정점을 연결하는 간선(edge)으로 이루어진 자료구조를 말합니다. 코딩 테스트에서 BFS와 단골로 나오는 개념입니다. DFS 깊이 우선 탐색(Depth-First Search) 정의 : 루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법을 말합니다. 자기 자신을 호출하는 순환 알고리즘이기 때문에 재귀 함수나 스택을 가지고 구현합니다. 이때 주의 사항은 어떤 노드를 방문했었는지 여부를 반드시 검사해야 합니다. 📘 Pseudo Code /** 1. 노드이 갯수 만큼 방문 여부를 위한 배열 생성 후 false로 초기화 (visit 배열) 2. 루트 노드부.. 2021. 12. 1.
[알고리즘 / JAVA] 까먹지 않기 위한 기본 정렬 알고리즘 코딩 테스트에서 정렬 문제는 자주 나옵니다. 하지만 보통 정렬 같은 경우에는 언어에 내장된 함수를 사용합니다. 그래서 개인적으로 정렬 알고리즘을 까먹는 부분이 있어서 이번 기회에 알면 좋을 4가지 정렬 알고리즘을 간략히 정리하려고 합니다. 선택 정렬 (Selection Sort) 현재 위치에 들어갈 데이터를 찾아 선택하는 정렬 알고리즘입니다. (시간 복잡도 : O(N^2)) ✏ 과정 정렬할 리스트에서 최솟값을 찾는다. 최솟값을 맨 앞 자리의 값과 교환 - Swap 맨 앞 자리 제외한 나머지 값들 중 최솟값을 찾아 다음 자리 값과 교환 이후 위의 과정을 반복 ✒ 코드 public static void main(String[] args) { int[] numbers = {1,2,5,7,8,11,10}; fo.. 2021. 11. 10.
[알고리즘 / Kotlin] 프로그래머스 - 베스트앨범 베스트 앨범(Level 3) 문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. 제한 조건 genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호.. 2021. 9. 24.
[알고리즘 / Kotlin] 프로그래머스 - 다리를 지나는 트럭 다리를 지나는 트럭 문제 설명 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6] kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다. solution 함수의 매개변수로 다리에 올라갈 수 있는 트럭 수 bridge_length.. 2021. 9. 15.
[알고리즘 / Kotlin] 프로그래머스 - 위장(해시) 위장 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. clothes의 모든 원소는 문자열로 이루어져 있습니다. 모든 문자열의 길이는 1 이상 20 이.. 2021. 9. 3.
반응형

loading