문제링크 ( https://school.programmers.co.kr/learn/courses/30/lessons/12980 ) 1. 풀이 힌트 - 순간이동을 최대한 많이 해야하므로 n에서 2를 나눈다. - 나누어 떨어지지 않는다면 점프를 해야하는 구간이므로 answer을 카운트 한다. - 몫이 0이 되면 카운트한 answer을 출력한다. 2. 코드 풀이 function solution(n) { let answer = 0; while(n > 0) { if(n % 2 === 0) { n /= 2; } else { n--; answer++; } } return answer; } 3. 회고 - 처음에는 0부터 세는 방식으로 접근했다. 각 step에서 점프와 순간이동을 호출하는 재귀 함수를 구현했다. 결과는 ..
문제링크 ( https://programmers.co.kr/learn/courses/30/lessons/12978 ) 아이디어 1) 1번 마을에서 각 마을로 갈 수 있는 최단 시간을 저장하기 위한 배열 dp 선언 2) 인접행렬(map)을 만들어 문제의 input으로 주어진 road를 통해 가중치 그래프 구현. 3) 구현한 인접행렬을 이용하여 K시간 이내에 1번 마을에서 갈 수 있는 최대 마을 수를 구함 (dfs) 3-1) dfs 함수는 인접행렬에서 탐색하려하는 행의 인덱스 (idx, 즉 마을)와 각 마을을 거쳐오면서 소요된 시간의 합 (sum)을 인자로 받음. 3-2) idx번째의 행 (특정 마을)을 탐색하면서 마을이 연결되어 있으면서 (time > 0) 현재 마을이동 시간과 소요된 시간의 합이 K 보다..
문제링크 ( https://programmers.co.kr/learn/courses/30/lessons/43165 ) 내 풀이 - 재귀를 돌면서 operation 배열안에 +또는 -를 numbers만큼 채운다. (countWaysToMakeTarget) - numbers만큼 채운 뒤에는 채워진 opertaion으로 숫자를 계산한다 (getCalculatedNumber) - 계산한 숫자가 target과 같으면 answer을 증가시킨다. function mySolution(numbers, target) { var answer = 0; const getCalculatedNumber = (operatorArr) => numbers.reduce((pre, cur, idx) => operatorArr[idx] ==..
문제링크 ( https://programmers.co.kr/learn/courses/30/lessons/42583 ) 분류 - Stack / Queue 1. 풀이 힌트 - 다리에 올라간 트럭들을 관리하는 배열을 생성한다. (bridge) - 해당 배열에는 무게(w) 및 다리를 건너기 까지 남은 시간(t)을 props로 갖는 객체(truck)를 관리한다. - 다리에 올라갈 수 있는 무게의 허용치 (curWeight)와 다리의 길이를 판단하여 bridge에 truck을 추가한다. (addTruckInTheBridge) - while문의 매 시행은 시간이 가는 것에 비례하며, 매 시행마다 bridge를 체크하여 시간이 끝난 트럭은 제거하고, 시간 및 무게를 변화시킨다 (filterTrucksInTheBridg..
- chapter8
- 백준
- 20200429
- 20200413
- 20200423
- 20200319
- 20200330
- 20200428
- 20200512
- 20200502
- 20200424
- likelion
- 20200425
- 생활코딩리눅스
- 20201204
- 20200510
- 20200417
- 20200427
- 20200406
- 20200403
- chapter7
- 20200804
- 20200503
- 20200420
- 20200504
- 20200317
- 20200624
- 20200421
- 20200622
- 20200415
- Total
- Today
- Yesterday