[프로그래머스 Level 1] 키패드 누르기 (C++)
programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 구현 방법 이 문제를 처음 봤을 때, 특정 알고리즘/ 자료구조를 사용할 필요 없이 구현력을 요구하는 문제 같아 보였습니다. 이 문제를 해결할 로직은 다음과 같습니다 입력받은 숫자 배열을 처음부터 하나씩 탐색 숫자가 1, 4, 7 이면 왼손으로 누르고 왼손 위치를 해당..
2021. 2. 28.
[알고리즘] 병합 정렬 (Merge Sort)
알고리즘 병합 정렬(Merge Sort)의 알고리즘은 다음과 같습니다. [일단 반으로 나누고, 나중에 병합해 준다] 정렬할 배열을 모두 크기가 1인 개별 배열인 상태로 시작합니다. 크기가 1이었던 배열들을 크기가 2인 배열로 묶으면서 정렬을 수행합니다. 모두 합칠 때까지 반복합니다. 예를 들어 다음 배열을 정렬해보겠습니다. [4 , 6 , 8 , 1 , 3 , 5 , 7 , 2 ] 1) 정렬할 배열은 모두 크기가 1인 개별 배열인 상태로 시작합니다. [ 4 ] [ 6 ] [ 8 ] [ 1 ] [ 3 ] [ 5 ] [ 7 ] [ 2 ] 2) 배열을 합치면서 정렬을 수행합니다. [ 4 , 6 ] [ 1 , 8 ] [ 3 , 5 ] [ 2 , 7 ] ↓ [ 1 , 4 , 6 , 8 ] [ 2 , 3 , 5 ,..
2021. 2. 14.
[알고리즘] 퀵 정렬 (Quick Sort)
알고리즘 퀵 정렬(Quick Sort)의 알고리즘은 다음과 같습니다. 정렬의 기준 값인 피봇(Pivot) 값을 설정합니다. 피봇 값보다 큰 숫자를 왼쪽부터 찾고, 피봇 값보다 작은 숫자를 오른쪽부터 찾습니다. 만약 작은 숫자의 index가 큰 숫자의 index보다 작으면 엇갈린 상황으로, 왼쪽의 작은 값과 피봇 값의 위치를 바꿔줍니다. 큰 숫자와 작은 숫자의 위치를 바꿔줍니다. 이를 배열이 정렬될 때까지 반복합니다. 이렇게 보면 처음에는 무슨 말인지 이해하기 어렵습니다. 예를 들어 다음 배열을 정렬해보며 쉽게 이해해 봅시다. [4 , 6 , 8 , 1 , 3 , 5 , 7 , 2 , 10 , 9] 1-1) 피봇 값을 선택합니다. 보통 첫 번째 원소를 피봇 값으로 설정합니다. 피봇 값 = 4 피봇 값인 4..
2021. 2. 14.