-
[프로그래머스] 위클리 1주차 - 부족한 금액 계산하기(JS)알고리즘/프로그래머스 2021. 9. 30. 13:48
문제 이해하기 제공되는 데이터는 이용료, 현재 금액, 놀이기구 타고싶은 횟수를 가지고 원하는 만큼 놀이기구를 탈때 금액이 얼마가 모자르는지 출력해야한다. 놀이기구는 N번째 이용한다면, 원래 이용료의 N배를 받기로 한다. (처음 100 -> 200 -> 300) 데이터 추상화 인풋 데이터는 이용료, 현재 금액, 타고 싶은 횟수로 정수로 제공 된다. 아웃풋 즉 결과는 모자른 금액을 제공 하므로 정수를 리턴하면 된다. 알고리즘 일반적인 풀이 놀이기구를 N번 이용하고, 이용료가 P라면 식은 다음과 같다 - P * N + P * ( N - 1 ) + ... + P * ( N - N) - 이용료에서 N을 곱한 값부터, N이 0이 될때까지 더해준다 . - 이후 현재 금액을 뺀 나머지 값이 결과 값이다. functio..
-
[프로그래머스] 위클리 6주차 - 복서 정렬 하기(JS)알고리즘/프로그래머스 2021. 9. 25. 00:49
문제 이해하기 복서들의 몸무게와 전적을 제안된 순서대로 정렬, 제안된 순서는 전체 승률이 높은복서 (1.)값이 같은 경우 몸무게가 무거운 복서를 이긴 횟수가 많은 복서 (1., 2.)값이 같은 경우 몸무게가 무거운 경우 (1., 2., 3.)값 모두 같은 경우 작은 번호가 앞쪽으로 데이터 추상화 제안 된 순서대로 정렬을 해야함 제안된 `승률`, `무거운 복서 승리 횟수`, `몸무게`, `번호`를 담을 배열 사용 알고리즘 승률은 head2head에서 승리 횟수인 W의 개수, 패배 회수인 L을 구한 후, 승리횟수와 패배횟수를 더한 전적으로 승리값을 나누어 구한다 let winRate = head2head.map((rates)=> { let winCnt = (rates.match(/W/g) || []).len..
-
[BOJ] 17296 : But can you do it in 0.5x A presses?알고리즘/백준 알고리즘 2019. 11. 1. 06:34
문제 이해하기 A 버튼을 누르는 최소 횟수 구하기 A 버튼을 X+0.5번을 누른 경우는 이전 스테이지를 깨고 다음 스테이지를 시작한 경우 예제 입력으로 문제 이해 하기 입력값이 0.5 1.5 0 1.5 1인 경우 각 스테이지의 필요한 A 버튼의 최소 횟수가 주어진다. 1 STAGE : 0.5 - 이전 스테이지가 없으므로 한번 눌러준다. (누른 상태를 유지한다!) => 총 1회 2 STAGE : 1.5 - 1 STAGE에서 누른 상태이므로 1번만 더 누르면 된다. => 총 2회 3 STAGE : 0 - 2 STAGE에서 누른 상태를 유지하자(최소 횟수를 구해야 하므로) => 총 2회 4 STAGE : 1.5 - 3 STAGE에서 누른 상태로 왔으므로 1번만 더 누르면 된다 => 총 3회 5 STAGE : ..
-
[알고리즘] 삽입정렬알고리즘/정렬 2019. 5. 21. 20:30
목표 기초적인 정렬 알고리즘 중 삽입 정렬 알고리즘에 대해 이해한다. 기초적인 장렬 알고리즘 중 삽입 정렬 알고리즘을 c++로 구현한다. 삽입 정렬 알고리즘이란? 삽입 정렬 알고리즘은 정렬된 위치에 삽입한다 하여 삽입 정렬 알고리즘이다. 자료 배열의 모든 요소를 정렬된 배열 부분과 비교하여. 자신의 위치에 삽입하는 알고리즘이다. 쉽게 일상에서 손안의 카드를 정렬하는 방법과 유사하다. 삽입 정렬 알고리즘의 예 31 8 45 73 3 삽입 정렬 알고리즘의 특징 배열의 모든 요소가 대부분 정렬되어 있는 경우 아주 효율적! 입력자료가 역순인 경우 최악의 경우로 n^2의 시간 복잡도를 가진다. 삽입 정렬 알고리즘의 구현 #include using namespace std; int main (){ int i, j,..
-
[알고리즘] 버블정렬알고리즘/정렬 2019. 5. 17. 16:34
목표 기초적인 정렬 알고리즘 중 버블 정렬 알고리즘에 대해 이해한다. 기초적인 정렬 알고리즘 중 버블 정렬 알고리즘을 c로 구현한다. 버블 정렬 알고리즘이란? 버블 정렬은 인접한 두개의 원소를 비교하여 정렬 구현하기는 쉽지만 성능은 매우 떨어진다. 버블 정렬의 예시 버블 정렬의 특징 정렬되어 있는 경우에도 교환이 일어난다. 교환작업이 매번 일어나 복잡하기 때문에 거의 쓰이지 않는다. 버블 정렬 알고리즘의 코드 구현(c++) #include using namespace std; int main(){ int n; cin >> n; int a[n]; for(int i = 0 ; i > a[i]; } for(int j = n-1; j >= 0; j--){ for(int i = 0 ; i < j ;i++){ if..
-
[알고리즘] 병합정렬알고리즘/정렬 2019. 5. 8. 00:21
목표 고급 정렬 알고리즘 중 병합 정렬 알고리즘에 대해 이해한다. 고급 정렬 알고리즘 중 병합 정렬 알고리즘을 c++로 구현한다. 병합 정렬 알고리즘이란? 병합 : 병합하다. 합쳐지다는 의미를 가진다. 정렬 : 항목들을 체계적으로 정리하는 과정 어떠한 자료구조를 합쳐서 정렬하는 방법 분할 정복 알고리즘의 하나이다 병합 정렬 알고리즘의 순서 분할 : 입력을 반으로 나눈다. 정복 : 반으로 나눈 전반부와 후반부를 독립적으로 정렬한다. 결합 : 정렬된 두 부분을 병합하여 정렬한다. 병합 정렬의 예 병합하는 과정 결합하는 구체적인 과정 병합 정렬 c++ 코드 #include #define MAX 8 using namespace std; int sort[MAX]; void mergin(int ary[], int ..
-
[알고리즘] 선택정렬알고리즘/정렬 2019. 5. 4. 22:14
목표 기초적인 정렬 알고리즘 중 선택 정렬 알고리즘에 대해 이해한다. 기초적인 장렬 알고리즘 중 선택 정렬 알고리즘을 c로 구현한다. 선택 정렬 알고리즘이란? 선택 : 가장 큰 수 또는 가장 작은 수를 선택 정렬 정렬 : 항목들을 체계적으로 정리하는 과정 가장 큰 수 또는 가장 작은 수를 선택하여 항목들을 체계적(오름차순, 내림차순)으로 정리하는 과정이다. 선택 정렬 알고리즘의 예 배열에 8, 31, 45, 73, 3을 저장하자. 선택 정렬 알고리즘의 특징 같은 레코드 값이 있는 경우 상대적인 위치가 바뀐다. 선택 정렬 알고리즘의 구현(c++) #include using namespace std; int main (){ int n; cin >> n; int a[n]; int last; for(int i ..