본문 바로가기

카테고리158

프로그래머스 양꼬치 문제 서론출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120830 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제는 양꼬치를 10개 먹을 때마다 음료수를 1개씩 서비스로 주고 양꼬치 가격은 12000원 음료수 가격은 2000원 입니다. 양꼬치 n개 음료수 k개 먹었을 때 지불해야하는 가격을 구하는 문제입니다. 문제 풀이저의 풀이는 간단하게 생각했습니다. 양꼬치와 음료수 가격을 전부 합한 다음에 서비스로 나오는 음료수 개수 만큼 가격을 뺄셈하였습니다. class Solution { public int solution(int n, in.. 2024. 10. 30.
코딩 테스트 준비 서론현재 개발자 채용은 빙하기라는 것은 누구나 아는 사실입니다. 취준생으로서 취업 경쟁률을 한층 더 높이기 위해서 코딩 테스트를 준비하고자 하는데 이에 백준 VS 프로그래머스를 고민하였습니다. 백준과 프로그래머스백준을 처음 접한 사용자는 이게 뭐야라는 소리가 절로 나옵니다. 왜냐하면 어떤식으로 해야하는지 전혀 정보가 없기 때문에 처음에 문제를 풀려고 보면 당황하게 됩니다. 그리고 문제를 풀려고하면 지문을 볼 수 없기 때문에 문제를 풀 때 불편합니다.그에 비해서 프로그래머스는 한 화면에 문제와 제출 화면이 같이 있어서 풀면서 지문을 다시 읽을 수 있어서 좋고 알고리즘을 풀 때도 이미 데이터를 받는 형식을 정해놓았기 때문에 알고리즘 풀이에 집중하면 되므로 편했습니다. 결론어차피 코딩 테스트를 준비하는 사람은.. 2024. 10. 29.
RESTful API 공부하기 서론RESTful API란 무엇이고 어떻게 사용하는지 간단히 정리하고자 합니다. https://github.com/hosunghyun/Smart_Makeup_Web.git GitHub - hosunghyun/Smart_Makeup_Web: 웹으로 캠을 사용하여 서버로 화장 시뮬레이션을 제공웹으로 캠을 사용하여 서버로 화장 시뮬레이션을 제공. Contribute to hosunghyun/Smart_Makeup_Web development by creating an account on GitHub.github.com 최근 진행 중인 Smart MakeUP 프로젝트에서 Spring Boot를 활용한 서버에서 CRUD를 구현했지만 확실하게 RESTful API란 기술을 공부하고자 합니다. RESTful API란.. 2024. 10. 28.
동적계획(Dynamic Programming, DP) 동적계획(Dynamic Programming, DP)동적 계획법(DP)은 복잡한 문제를 작은 하위 문제로 나누어 해결한 결과를 저장(메모이제이션)하거나 점진적으로 계산(Top-Down 혹은 Bottom-Up)하여 전체 문제를 해결하는 알고리즘 설계 기법입니다. 동적 계획법의 특징부분 문제의 중복성 : 동일한 하위 문제가 여러 번 재계산되는 문제를 해결하는데 적합합니다. 최적 부분 구조 : 문제의 최적해가 하위 문제의 최적해로 구성될 수 있어야 합니다. 동적 계획법의 접근 방법하향식 접근방법 재귀와 메모이제이션을 이용해 해결큰 문제를 작은 문제로 분할하면서 해결이미 계산된 하위 문제의 결과를 저장하여 중복 계산을 방지상향식 접근방법작은 문제부터 차례대로 해결하여 큰 문제를 해결보통 배열을 이용해 결과를 저.. 2024. 10. 25.
빠른 정렬(Quick Sort) 빠른 정렬(Quick Sort)빠른 정렬(Quick Sort)은 분할 정복(Divide and Conquer) 기법을 기반으로 하는 정렬 알고리즘입니다. 빠른 정렬은 합병 정렬과 비슷하지만 빠른 정렬은 배열을 분할하는 방식이 다릅니다. 입력 배열에서 하나의 기준값(pivot)을 선택하고 기준값보다 작으면 왼쪽 배열, 크면 오른쪽 배열로 분할한 뒤 재귀적으로 정렬합니다. 빠른 정렬의 동작 원리기준값(Pivot) 선택 : 배열에서 원소 하나를 기준값으로 선택합니다. 일반적으로 배열의 첫 번째, 중간, 마지막 원소 값을 선택합니다.분할(Divide) : 기준값보다 작은 값은 왼쪽 배열, 큰 값은 오른쪽 배열에 배치합니다.정복(Conquer) : 왼쪽과 오른쪽 배열을 재귀적으로 정렬합니다.빠른 정렬의 특징시간 .. 2024. 10. 22.
합병 정렬(Merge Sort) 합병 정렬(Merge Sort)합병정렬(Merge Sort)은 분할정복(Divide and Conquer) 알고리즘을 기반으로 동작하는 정렬 알고리즘입니다. 합병(Merge)을 이용하면 임의의 배열을 정렬할 수 있습니다. 예를 들어 원소가 n개인 배열을 정렬한다고 가정하면 계속해서 반으로 분할하는 과정을 거치면 언젠가 원소가 하나인 배열이 됩니다. 하나짜리 배열은 정렬된 배열이니 합치면 정렬된 배열이 됩니다. 이런 절차를 합병정렬이라 합니다. 합병 정렬의 동작 원리분할(Divide) : 원소가 1개 남을 때까지 배열을 반으로 나누는 과정을 반복합니다.정복(Conquer) : 나뉜 배열을 각각 따로 정렬합니다. 병합(Combine) : 정렬한 두 배열을 합병하여 더 큰 정렬된 배열을 만듭니다. 합병 정렬의.. 2024. 10. 21.
이분 검색(Binary Search)-재귀(Recursion) 이분 검색(Binary Search)-재귀(Recursion) 2024.10.16 - [Computer Science & Engnieering/Algorithm] - 이분 검색 알고리즘(Binary Search) 이분 검색 알고리즘(Binary Search)이분 검색 알고리즘(Binary Search)이분 검색 알고리즘(Binary Search)란 정렬된 배열에서 특정 값을 찾는 알고리즘입니다. 검색 범위를 반복적으로 절반으로 나누어 목표 값을 찾기 때문에 시간 복잡hosunghyun.tistory.com재귀 함수의 재귀 호출은 분할정복의 하향식 문제풀이 방식과 원리가 같습니다.  그래서 반복(Iteration)을 이용한 이분검색 알고리즘을 재귀 호출 방식으로 만들고자 합니다. 이분 검색 설계하기[분할].. 2024. 10. 20.
분할정복(Divide-and-Conquer) 분할정복(Divide-and-Conquer)분할정복(Divide and Conquer)이란?분할정복은 프랑스 나폴레옹이 실제로 시도한 전략에서 따온 것으로 오스트리아-러시아 연합군을 상대할 때 중앙으로 돌격하여 병력을 둘로 나누어 나뉜 병력을 각개격파한 것에서 따왔습니다. 분할정복은 문제를 작은 하위 문제로 나누고 하위 문제들을 각각 해결한 후 결과를 합쳐서 원래 문제를 해결하는 알고리즘 설계 기법입니다. 이를 통해 복잡한 문제를 단순하고 효율적으로 해결할 수 있습니다. 분할한 입력사례를 바로 답을 구하지 못할 경우 다시 분할하여 답을 구할 수 있을 만큼 충분히 작아질 때까지 입력사례를 분할합니다. 즉 분할정복은 3단계의 절차를 거칩니다. 분할(Divide) => 정복(Conquer) => 결합(Comb.. 2024. 10. 19.
알고리즘의 분석 알고리즘의 분석알고리즘의 분석이란 알고리즘의 성능을 평가하는 과정입니다. 설계된 알고리즘이 얼마나 효율적으로 주어진 문제를 해결하는지 알고리즘의 효율성을 정량적으로 측정하고 비교하기위해 수행됩니다. 분석은 주로 시간과 공간의 관점에서 이루어지며 이를 통해 더 나은 알고리즘을 설계하거나 최적의 알고리즘을 선택할 수 있습니다. 알고리즘 분석의 목적효율성 평가 : 주어진 입력에서 알고리즘이 얼마나 빠르고 효율적으로 실행되는지 평가 하기 위해서 입니다.비교 및 선택 : 여러 알고리즘 중에서 적절한 알고리즘을 선택하기 위해서 입니다.자원 관리 : 제한된 시간과 메모리 용량을 효율적으로 사용하는 알고르즘을 설계 하기 위해서 입니다. 알고리즘 분석의 기준시간 복잡도(Time Complexity) 분석시간 복잡도는 알.. 2024. 10. 18.