공부/알고리즘 10

[카카오 2023 코딩테스트] 택배 배달과 수거하기_java

https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 찾기 해당 문제는 결국 가장 먼 곳 부터 배달 및 수거가 완료되는것이 낫다고 판단한다.(그리디 알고리즘) 이유는 가장 비효율적인것이 물류창고에서 가장 먼 곳을 가게되는것이라고 보이기 때문이다. 그리고 여기서 감안해야 하는 부분이 기사는 도착지를 여러번 방문할 수 있다는 점이다. 그말은 즉슨 굳이 한번에 배달, 수거를 할 필요가없고 여러번 방문해도 된다는 점이다. 2. 코드 구현하기..

공부/알고리즘 2023.10.31

[프로그래머스] 실패율 _javascript

문제 설명 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가..

공부/알고리즘 2022.09.27

[프로그래머스] [1차] 다트 게임 _javascript

입력 형식 "점수|보너스|[옵션]"으로 이루어진 문자열 3세트. 예) 1S2D*3T 점수는 0에서 10 사이의 정수이다. 보너스는 S, D, T 중 하나이다. 옵선은 *이나 # 중 하나이며, 없을 수도 있다. 출력 형식 3번의 기회에서 얻은 점수 합계에 해당하는 정수값을 출력한다. 예) 37 입출력 예제 예제dartResultanswer설명 1 1S2D*3T 37 11 * 2 + 22 * 2 + 33 2 1D2S#10S 9 12 + 21 * (-1) + 101 3 1D2S0T 3 12 + 21 + 03 4 1S*2T*3S 23 11 * 2 * 2 + 23 * 2 + 31 5 1D#2S*3S 5 12 * (-1) * 2 + 21 * 2 + 31 6 1T2D3D# -4 13 + 22 + 32 * (-1) 7..

공부/알고리즘 2022.09.27

[프로그래머스] 체육복 _ javascript

문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를..

공부/알고리즘 2022.09.27

[프로그래머스] 완주하지 못한 선수 _ javascript

문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예participantcompletionreturn ["leo", "kiki",..

공부/알고리즘 2022.09.26

[프로그래머스] 크레인 인형뽑기 _ javascript

문제 설명 게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데,..

공부/알고리즘 2022.09.26

알고리즘 성능평가(복잡도)

복잡도(Complexity) 알고리증 성능을 나타내는 척도. 시간복잡도 : 입력에대한 알고리즘의 수행시간 분석 공간복잡도 : 입력에대한 알고리즘의 메모리 사용량 분석 시간 복잡도가 높다는것은 알고리즘의 수행시간이 높은것을 나타낸다. 시간 복잡도가 낮다는것은 알고리즘의 수행시간이 낮은것을 나타낸다. 따라서 같은 기능을 수행하는 알고리즘에 대해서는 시간복잡도가 낮을수록 품질이 좋다. 시간복잡도의 표기법 빅오 표기법(Big-O Notation) 가장 빠르게 증가하는 항만을 고려하는 표기법 : 함수의 상한만을 나타낸다. 예를 들어 연산횟수가 3N^3 + 15^2 +15520 인 알고리즘이 있다고 했을경우 빅오표기법으로는 O(N^3)으로 표기됩니다. N의 값이 아주 큰 수라고했을경우 나머지 연산횟수는 비교적 작은..

공부/알고리즘 2022.09.17

[자료구조] 트리구현

DFS,BFS 공부하기전에 기초가되는 트리구조를 어떻게 구현할 지 생각해 보았다. 답지를 보면 더 빠르겠지만 제대로 된 이해를 하지 못할것 같아서 먼저, 혼자 생각한다음에 트리를 구현해보록 했다. 자바에 익숙해져서 그런지 객체로 구현하는 것이 습관이 되어서 , 비록 자바스크립트이지만 class를 사용하여 객체들만의 특성을 생각하여 변수를 부여하였다. 일단 구현은 했는데,,, 맞는지 검증하는 과정을 더 생각해보아야겠다 class Tree{ _masterNode; _nodes = []; _values = []; constructor(nowValue , values){ this._values = values; this. _masterNode = new Node(nowValue,0,values,null,this..

공부/알고리즘 2022.09.13

[알고리즘] 그리디 알고리즘(탐욕법)

그리디 알고리즘이란 ? 주어진 상황에서 가장 좋은것(큰 값)을 구하는 알고리즘이다. 단순히 가장 좋은것을 선택하는 행위를 반복하여도 최적의 값이 추출되는지 검증이 필요하다. 1. 해결 아이디어 제시 거스름돈으로 사용할 화폐단위를 정의한다. 가장 적은 개수를 구하는 문제이기에 화폐단위중 가장 큰 값으로 거슬러 줄수 있는 개수를 구한다. 그다음으로 적은 금액으로 거슬러 줄 수 있는 개수를 구한다. 해당 작업을 반복한다. 2. 정당성 분석 해당 문제는 거슬러 주어야할 최소 동전 개수를 구하는 문제 이기에, 화폐의 가장큰 단위로 거슬러 준다면 , 거스름돈의 개수를 최소화할 수 있다. 예 : 거스름돈 1,000 일 경우 500 * 2 100 * 10 50 * 20 10 * 100 이기에 가장큰 화폐단위인 500원..

공부/알고리즘 2022.09.08