알고리즘 90

프로그래머스 - 주식가격 (Javascript) 풀이

문제초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 풀이- 반복문을 두번 돌리는데 만약 j 번쨰 요소 보다 i 번째 요소가 클 경우가 가격이 떨어진 것이기 때문에 break; 하면 끝납니다.function solution(prices) { var answer = new Array(prices.length).fill(0); for (let i = 0; i prices[j]) { break; } } } return answer;}

알고리즘 2024.06.16

프로그래머스 - 다리를 지나는 트럭 (Javascript) 풀이

문제트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. solution 함수의 매개변수로 다리에 올라갈 수 있는 트럭 수 bridge_lenth, 다리가 견딜 수 있는 무게 weight, 트럭 별 무게 truck_weights가 주어집니다. 이떄 모든 트럭이 다리를 건너려면 최소 몇초가 걸리는지 return 하도록 solution 함수를 완성하세요. 풀이- 문제에서 시간은 반복문을 통해 작업이 진행된 횟수이다. time = 0 선..

알고리즘 2024.06.15

프로그래머스 - 프로세스 (Javascript) 풀이

풀이1. 배열에 index를 부여해야한다. 예를들어 기존 배열 index로보면 0이 첫번째 1이 두번쨰... 이런식으로 가지만 해당 문제에서는 만약 큰 수가 존재하면 다시 넣어야 한다는 가정이 있다. 만약 0번째 index에 있는 데이터를 다시 넣게 된다면 0번 index 에서 arr.length-1 값이 되어 버린다. 그렇다면 location 인자로 주어지는 값은 다른 값을 가르키게 되는 것이다. 2. 먼저 map을 통해 숫자 배열을 객체배열로 변경하면서 fixIndex 프로퍼티를 추가한다. 3. while(true) 를 통해 실행하고, 배열에 첫번째 있는 값을 뽑아서 그 값이 가장 큰지를 체크하고 가장 크지 않으면 첫번쨰 있던 값을 맨뒤로 보낸다. 객체 배열이기때문에 처음에 부여한 인덱스는 fixIn..

알고리즘 2024.06.12

프로그래머스 - 기능개발 (Javascript) 풀이

풀이 [93, 30, 55] 라는 배열이 주어지고 각 개발 속도는 [1, 30, 5] 이다. 개발 속도를 구하는 식은 (100 - 현재 개발진행퍼센트) / 개발속도 이다. 93일 경우 (100 - 93) / 1 하면 되는데 이게 나누다가 소수점이 나오는 경우도 계속 발생하기에 Math.ceil 을 통해 올림을 해줘야 한다. Math.ceil((100 - 93) / 1)) 하면 된다. 이렇게 하면 개발완료까지 남은 일수를 모두 구할 수 있고 이걸 map 을 통해 수행한다. let days = progresses.map((progress, index) => Math.ceil((100 - progress) / speeds[index])); 그 다음 특정 변수에 첫번째 개발이 끝날때까지 남은 일수 즉 days의..

알고리즘 2024.06.09

프로그래머스 - 같은 숫자는 싫어 (Javascript) 풀이

풀이배열 arr의 각 원소는 0~9 까지로 이루어져있고 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려한다. 여기서 포인트는 연속적으로 반복되는 숫자를 제거하는 것이다. 임시 변수를 만들고 임시변수에 첫번째 인덱스 값을 넣어두고, 해당 값이랑 비교하면서 같지 않을 경우에 answer에 데이터를 넣고, 임시변수에 값도 해당 값으로 변경하면 된다. function solution(arr){ var answer = []; let temp = arr.shift(); answer.push(temp); for(var i = 0; i

알고리즘 2024.06.08

프로그래머스 - 추억 점수(Javascript)풀이

접근 1. 파라미터 name (사람 이름을 담은 문자열) , yearning (각 사람별 그리움 점수를 담은 정수배열), photo (이차원 문자열배열)2. 여기서 name과 yearning의 배열 길이는 항상 같다는 것을 알 수 있고, 그 값을 Map 에 모두 담습니다.3. 이차원 배열을 반복문 안에서 계속 순회하며 Map 에 만약 값이 있을 경우 그리움 점수가 있다 것을 알 수 있으니 해당 값을 다 더해서 answer  배열에 추가하면 된다.   function solution(name, yearning, photo) { var answer = []; var map = new Map(); for(var i = 0; i { let total = 0; ..

알고리즘 2024.06.05

프로그래머스 - 달리기 경주(Javascript)풀이

https://school.programmers.co.kr/learn/courses/30/lessons/178871?language=javascript 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 얀에서는 매년 달리기 경주가 열ㄹ비니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 떄 추월한 선수의 이름을 부릅니다. 예를들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 떄, 해설진이 "soe" 선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, ..

알고리즘 2024.05.08

LeetCode - Same Tree Javascript

Same Tree 의 경우 두 이진트리가 같은지 확인하는 문제이다. 두 이진트리가 같다는것은 두 트리의 구조가 동일하며, 노드들의 값이 모두 같아야 한다는 것을 의미하는 것이다. 재귀적으로 두 트리를 동시에 탐색하는 방식으로 풀었다. 각 단게에서 현재 노드의 값이 같은지 확인하고 왼쪽 자식과 오른쪽 자식을 각각 재귀적으로 비교하면 정답이다. p = [1,2,3]; q = [1,2,3]; function TreeNode(val, left, right) { this.val = (val===undefined ? 0 : val) this.left = (left===undefined ? null : left) this.right = (right===undefined ? null : right) } 정답 var i..

알고리즘 2024.03.30

백준 No.17396 백도어 - JAVA

문제 유섭이는 무척이나 게으르다. 오늘도 할 일을 모두 미뤄둔 채 열심히 롤을 하던 유섭이는 오늘까지 문제를 내야 한다는 사실을 깨달았다. 그러나 게임은 시작되었고 지는 걸 모척이나 싫어하는 유섭이는 어쩔 수 없이 백도어를 해 게임을 최대한 빠르게 끝내기로 결심하였다. 최대한 빨리 게임을 끝내고 문제를 축제해야 하기 때문에 유섭이는 최대한 빨리 넥서스가 있는 곳으로 달려가려고 한다. 유섭이의 챔피언은 총 N개의 분기점에 위치할 수 있다. 0번째 분기점은 현재 유섭이의 챔피언이 있는 곳을, N-1번째 분기점은 상대편 넥서스를 의미하며 나머지 1,2..N-2번째 분기점은 중간 거점들이다. 그러나 유섭이의 챔피언이 모든 분기점을 지나칠 수 있는 것은 아니다. 백도어의 핵심은 안 들키고 살금살금 가는 것이기 때..

알고리즘 2023.05.07

백준 No.18243 Small World Network - JAVA

문제 작은 세상 네트워크(Small World Network)란 Milgram교수가 1967년에 처음으로 밝혀낸 이론이다. 간단히 설명하자면 전체 네트워크가 거대하더라도 전체가 서로 가깝게 연결될 수 있다는 이론이다. 해당 이론에서 Milgram교수는 지구에 있는 모든 사람들이 최대 6단계로 연결될 수 있다고 주장하였다. 예를 들어 이 문제를 김모씨(23)와 이지은님(27)이 서로 생판 모르는 관계라도 최대 6단계만 거치면 서로 연결이 도어있다는 것이다. 위의 그림에서 정점은 사람, 간선은 친구 관계라 할 떄 왼쪽 그래프의 모든 정점들은 서로 최소 6단계 이하로 연결되어 있으므로 작은 세상 네트워크를 만족한다. 그러나 오른쪽 그래프의 초록색 정점끼리는 최소 7단계를 거쳐서 연결되어 있으므로 작은 세상 네..

알고리즘 2023.05.06