코딩테스트 12

코딩테스트 연습 정렬 K번째수

문제)배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.2에서 나온 배열의 3번째 숫자는 5입니다.배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.  문제풀이)function solution(array, commands) ..

코딩테스트 2024.08.15

[코테] 프로그래머스 해시 알고리즘 - 베스트앨범 (문제풀이)

문제설명)스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요.  문제풀이)항상 그렇듯이 맵을 생성해서 장르를 저장한다. 하지만 이번엔 총 카운트가 필요해서 두개를 생성해서 담았다.그다음에 총 카운트를 해서 제일 많은 카운트의 장르순으로 정렬을 한다 .정렬을 한 다음 다시 순서대로 담으면 완성function solution(genres, plays) { var answer = []; const genreMap = new Map();..

코딩테스트 2024.05.03

[코테] 프로그래머스 해시 알고리즘 - 의상 (문제풀이)

문제설명)코니는 각 종류별로 최대 1가지 의상만 착용할 수 있습니다. 예를 들어 위 예시의 경우 동그란 안경과 검정 선글라스를 동시에 착용할 수는 없습니다.착용한 의상의 일부가 겹치더라도, 다른 의상이 겹치지 않거나, 혹은 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 옷을 착용한 것으로 계산합니다.코니는 하루에 최소 한 개의 의상은 입습니다. 문제풀이)저번에 풀었던 문제와 비슷하게 느껴져서 map.set 을 사용하면 좋을거 같다고 생각이 들었다.데이터를 처음에 맵에 넣어두고 이렇게 저렇게 다양한 시도를 해본 끝에 탄생먼저 데이터를 담을 맵을 생성옷갯수대로 포문을 돌리고 카테고리 중복 체크를 하기위해 +1 를 더한다그럼 맵안에 {옷 : 2, 모자 :1} 이런식으로 세팅이 된다따라서 맵을 다시 포문..

코딩테스트 2024.04.28

[코테] 프로그래머스 해시 알고리즘 - 전화번호 목록 (문제풀이)

문제설명)전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요.  문제풀이)비교를 위해 목록을 정렬포문을 돌리면서 뒤에랑 비교function solution(phone_book) { var answer = true; // 전화번호 목록을 정렬 phone_book.sort(); for (var i = 0; i

코딩테스트 2024.04.28

[코테] 프로그래머스 해시 알고리즘 - 완주하지 못한 선수 (문제풀이)

문제설명)마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.  문제는 이런식이여서 처음엔 간단하게 풀어봤다.문제풀이)각각의 어레이를 정렬해서 비교길이를 맞추기 위해 completion에는 빈값 추가function solution(participant, completion) { var answer = ''; completion[completion.length] = ''; var arr1 = participant.sort(); var arr2 = completion.sort(); for(le..

코딩테스트 2024.04.24

[코테] 프로그래머스 해시 알고리즘 - 폰켓몬 문제풀이

https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코테 준비를 하면서 각각의 알고리즘 관련 문제를 풀어보고 있다. 먼저 해시 알고리즘의 문제중 폰켓몬을 풀어봤다. 문제 요약) 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3, 1, 2, 3]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬..

코딩테스트 2024.04.21

[코테] 그리디 & 분할 정복 & 해시 알고리즘 예제

그리디 알고리즘 : 문제를 해결하기 위해 선택 가능한 옵션 중에서 가장 최선의 것을 선택해 나가는 알고리즘 function greedyCoinChange(amount, coins) { coins.sort((a, b) => b - a); // 동전을 내림차순으로 정렬 let change = []; let remaining = amount; for (let coin of coins) { while (remaining >= coin) { change.push(coin); remaining -= coin; } } return change; } const coins = [25, 10, 5, 1]; const amount = 87; const result = greedyCoinChange(amount, coins)..

코딩테스트 2024.04.21

[코테] 그래프 알고리즘 & 동적 계획법 예제

이름만 들어도 어려워보이는 그래프 알고리즘과 동적 계획법니다. 그래프 알고리즘은 그래프를 탐색하고 원하는 정보를 찾는 데 사용된다. 예를 들어, 소셜 네트워크에서 친구 관계를 탐색하거나, 지도 애플리케이션에서 최단 경로를 찾는 데 활용될 수 있다. 너비 우선 탐색(BFS): 시작 정점에서부터 인접한 정점을 먼저 모두 방문한 후, 그 정점들의 인접한 정점들을 차례대로 방문하는 방식. 큐(queue) 자료구조를 사용하여 구현. 깊이 우선 탐색(DFS): 시작 정점에서부터 한 정점의 모든 인접한 정점을 방문한 후, 방문한 정점을 시작으로 다시 깊이 우선 탐색을 진행. 스택(stack) 자료구조나 재귀 함수를 사용하여 구현 // 너비 우선 탐색(BFS) 함수 function bfs(graph, start) { ..

코딩테스트 2024.03.24

[코테] 탐색 알고리즘(Search Algorithms) & 정렬 알고리즘(Sort) 예제

탐색 알고리즘 탐색 알고리즘에는 대표적으로 2가지 종류가 있다. 1. 선형탐색 : 데이터를 처음부터 끝까지 순차적으로 탐색하여 원하는 값을 찾는 알고리즘 2. 이중탐색 : 이진 트리 구조에서 데이터를 탐색하는 알고리즘 선형탐색 예제) function linearSearch(arr, target) { for (let i = 0; i < arr.length; i++) { if (arr[i] === target) { return i; // 찾은 경우 해당 인덱스를 반환 } } return -1; // 못 찾은 경우 -1을 반환 } 이중탐색 예제) function binarySearch(arr, target) { let left = 0; let right = arr.length - 1; while (left a..

코딩테스트 2024.03.24

[코테] 알고리즘의 종류

자 이제 코테준비를 다시 시작하는 의미에서 알고리즘 공부를 시작해보겠다. 이전에는 그냥 부딪혀서 문제풀이에 집중했었는데 알고리즘 공부를 제대로 할 필요성을 느껴서 한번 정리해보았다. 앞으로도 조금씩 정리할계획!! 우선 대표적인 알고리즘 종류에 대해서 알아보자 1. 탐색 알고리즘(Search Algorithms): 탐색 알고리즘은 주어진 데이터에서 원하는 값을 찾는 데 사용된다. 대표적인 탐색 알고리즘으로는 선형 탐색(Linear Search)과 이진 탐색(Binary Search)이 있다. 2. 정렬 알고리즘(Sorting Algorithms): 정렬 알고리즘은 데이터를 특정한 기준에 따라 정렬하는 데 사용된다. 대표적인 정렬 알고리즘으로는 버블 정렬(Bubble Sort), 선택 정렬(Selection..

코딩테스트 2024.03.22
반응형