cpp
-
프로그래머스 문제 풀이 가장 큰 수24년 11월 이전/레거시-프로그래머스-코딩 테스트 고득점 kit 2019. 11. 6. 14:58
이 문제는 이시윤 강사님의 프로그래머스 강좌 "파이썬을 무기로, 코딩테스트 광탈을 면하자!"를 보고 정리한 내용입니다. 문제 URL 가장 큰 수 Contents 문제 지문 파악하기 강사님의 알고리즘 풀이 구르미의 알고리즘 풀이 문제 지문 파악하기 이 문제는 주어진 입력 numbers를 가지고 가장 큰 수를 만드는 것입니다. 먼저 첫 번째 입력을 볼까요? numbers = [6, 10, 2] 여기서 우리가 원하는 기준 "큰 수를 만드는 순"으로 정렬을 해주어야 합니다. 이를테면 6, 10 을 비교합시다. 6 > 10 ( "6" + "10" = "610" > "10" + "6" = "106") 우리 정렬 기준에서는 6이 10보다 우선순위가 높습니다. 왜냐하면, 두 숫자를 가지고 만든 숫자 610, 106 중..
-
프로그래머스 문제 풀이 체육복24년 11월 이전/레거시-프로그래머스-코딩 테스트 고득점 kit 2019. 11. 5. 17:47
이 문제는 이시윤 강사님의 프로그래머스 강좌 "파이썬을 무기로, 코딩테스트 광탈을 면하자!"를 보고 정리한 내용입니다. 문제 URL 체육복 Contents 문제 지문 파악하기 강사님의 알고리즘 풀이 구르미의 알고리즘 풀이 문제 지문 파악하기 이 문제는 얼마나 많은 학생들이 체육복을 입을 수 있느냐를 물어보는 문제입니다. 제일 중요한 것은 이것입니다. reserve에 있는 학생들, 그러니까 여벌이 존재하는 학생들은 자신의 앞,뒷 번호 학생에게 체육복을 전달할 수 있다. reserve, lost에 둘 다 들어있는 학생들은 체육복을 빌려주지 않는다. (어찌보면 당연한 것) "탐욕법"은 말 그대로 그 상황에서 제일 최적의 해를 선택하는 알고리즘 패러다임입니다. 먼저 일련의 예를 들어봅시다. 입력 : n = 5 ..
-
프로그래머스 문제 풀이 베스트 앨범24년 11월 이전/레거시-프로그래머스-코딩 테스트 고득점 kit 2019. 11. 5. 15:42
문제 URL 베스트 앨범 Contents 문제 지문 파악하기 구르미의 알고리즘 풀이 문제 지문 파악하기 이번 문제는 주어진 입력 음악의 genres, 음악의 플레이 횟수 plays를 이용하여 다음을 조건을 만족하는 리스트를 만드는 것입니다. 총 플레이 횟수가 많은 genre 별로 내림차순으로 정렬되어야 한다. 장르 내에서도 play 횟수 내림차순, 고유 번호 오름차순으로 정렬되어야 한다. 한 장르 당 최대 2개까지만 뽑아서, 플레이 목록을 만들 수 있다. 플레이 목록은 고유 번호로 하는 리스트이다. 이것들을 만족하는 리스트를 어떻게 만들 수 있을까요? 먼저 고유 번호는 각 배열의 인덱스를 뜻합니다. 입력에 대해서 표로 표현하면 다음과 같습니다. 인덱스 0 1 2 3 4 장르 classic pop clas..
-
프로그래머스 문제 풀이 위장24년 11월 이전/레거시-프로그래머스-코딩 테스트 고득점 kit 2019. 11. 5. 15:38
문제 URL 위장 Contents 문제 지문 파악하기 구르미의 알고리즘 풀이 문제 지문 파악하기 이 문제에서 중요한 것은 2가지입니다. 입력은 "옷, 파츠" 쌍의 2차원 배열입니다. 옷의 이름은 1개입니다. 이 문제는 "해시 + 경우의 수"로 풀 수 있습니다. 무슨 말이냐, 첫 번째 입력을 보겠습니다. 입력 : [ ["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"] ] 이 들어온 입력에 대해서 { 파츠 : 옷의 개수 } 쌍으로 저장하는 해시를 만들어 줍니다. 입력을 통해 만들어지는 해시 : { "headgear" : 2, "eyewear" : 1 } 이 때, 각 파츠를 조합해서 만들 수 있는 경우의..
-
프로그래머스 문제 풀이 전화번호 목록24년 11월 이전/레거시-프로그래머스-코딩 테스트 고득점 kit 2019. 11. 5. 15:34
문제 URL 전화번호 목록 Contents 문제 지문 파악하기 구르미의 알고리즘 풀이 문제 지문 파악하기 이 문제는 전화번호부에 존재하는 번호 중, 다른 전화번호가 접두어인지 판별하는 문제, 즉 다른 전화번호로 시작하는 전화번호가 있는지, 판별하는 문제입니다. 정말 쉽게 풀면 전화번호부를 2번 순회하여, 해당 번호와 다른 번호를 비교하는 방법이 있습니다. 첫 번째 입력을 통해서 찬찬히 살펴보겠습니다. 입력: ["119", "97674223", "1195524421"] 여기서 "119"를 기준으로 "97674223", "1195524421" 순서대로 시작하는 문자열이 있는지 판별합니다. "119" - "97674223" : 둘 다 서로에게 시작하는 번호로 쓰이지 않음. "119" - "1195524421"..
-
프로그래머스 문제 풀이 완주하지 못한 선수24년 11월 이전/레거시-프로그래머스-코딩 테스트 고득점 kit 2019. 11. 4. 15:23
이 문제는 이시윤 강사님의 프로그래머스 강좌 "파이썬을 무기로, 코딩테스트 광탈을 면하자!"를 보고 정리한 내용입니다. 문제 URL : 완주하지 못한 선수 Contents 문제 지문 파악하기 강사님의 알고리즘 풀이 구르미의 알고리즘 풀이 문제 지문 파악하기 문제에서 중요한 키 포인트는 2가지입니다. 동명이인이 있을 수 있다. 완주하지 못한 사람을 딱 1명이다. 가장 쉽게는 "completion"을 순회하면서, "participant"에서 같은 이름을 삭제하면 됩니다. 동명이인일 경우는 먼저 나온 이름을 삭제하고 그러다보면, 이름이 1개가 남을 것입니다. 코드는 이렇게 될겁니다. #include #include #include using namespace std; string solution(vector ..
-
목차24년 11월 이전/레거시-알고리즘 2019. 10. 15. 10:49
Contents 무식하게 풀기 분할 정복 동적 계획법 탐욕법 조합 탐색 최적화 문제를 결정 문제로 바꿔 풀기 수치 해석 정수론 계산 기하 비트 마스크 부분합 선형 자료구조 큐와 스택, 데크 문자열 트리 이진 탐색 트리 우선 순위 큐 구간 트리 상호 배타적 집합 트라이 그래프 깊이 우선 탐색 너비 우선 탐색 최단 경로 알고리즘 최소 스패닝 트리 네트워크 유량 구르미의 "Computer Science 정복하기" 두 번째 프로젝트 알고리즘입니다. 이 문서의 대상 독자는 다음과 같습니다. C++ 혹은 하나의 프로그래밍 언어의 기초를 다지신 분 알고리즘 패러다임과, 자료구조를 이용한 문제 해결 능력을 갖추고 싶으신 분 자신이 푼 해결법과 비교하고 싶으신 분 이 문서는 완벽하지 않습니다. (최선을 다했습니다만.....
-
[자료구조/알고리즘]03. 이중 연결 리스트 Double Linked List24년 11월 이전/레거시-자료구조 2019. 1. 19. 00:38
CH 03 이중 연결 리스트(Double Linked List)목표연결 리스트의 응용 중 하나인 이중 연결 리스트에 대해 알아보고, C/C++ 프로그래밍 언어로 구현해봄으로써 연결 리스트의 이해의 깊이를 늘려보세요!목차이중 연결 리스트란 무엇인가?연결 리스트의 한계이중 연결 리스트에 대해서이중 연결 리스트 ADTC로 구현하기C++로 바꿔보기결론이중 연결 리스트 정리1. 이중 연결 리스트란 무엇인가?연결 리스트의 한계배열의 한계를 뛰어넘기 위해서, 연결 리스트란 자료 구조를 공부하였습니다. 그러나 연결 리스트에도 불편함이 있지요? 무슨 불편함이냐면, 분명히 꼬리 부분 tail 의 위치를 알고 있음에도, 꼬리 삭제 시에 꼬리 이전까지 반복문을 돌아야 했습니다. 이를 개선할 방법이 없을까요?이중 연결 리스트에..