문제링크 ( 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/17679# ) 아이디어 1. board를 2차원 배열로 변환(boardArr) 2. 변환된 배열을 0,0 -> m - 1, n - 1까지 순회하면서 4블록을 만들 수 있는 경우를 체크 3. 체크된 범위를 객체화하여 지워질 배열(deletedArr)에 저장 4. deletedArr를 순회하면서 boardArr의 공간을 비움 5. 비워진 공간에 따라 프렌즈들을 빈 공간으로 내림 (DropBlockToEmptySpace) 6. 1 ~ 5의 시행을 더이상 지울 4블록이 없을 때 까지 시행 (deletedArr가 empty일 때) 7. 최종적으로 만들어진 boardArr를 순회하면서 지워진 부분 (빈스트링인..
문제링크 ( 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] ==..
- 20200427
- 20200510
- 20200417
- 20200421
- chapter8
- 20200403
- 20200512
- 20200424
- 백준
- 20200330
- 20200420
- 20200504
- 20200406
- 20200425
- 20200423
- chapter7
- 20200319
- 20200804
- 20200428
- 20200502
- 20200622
- 20200317
- 20201204
- 20200415
- 20200413
- 20200503
- 20200624
- 20200429
- likelion
- 생활코딩리눅스
- Total
- Today
- Yesterday