목록알고리즘 (103)
언젠가는 펼쳐 볼 아카이브

사용언어 : javascript lv.1 문제 풀이 소요 시간 : 15분 52초 타입 : Hash #문제 #제출코드 function solution(nums) { let answer = 0; let s = new Set(); let n = Math.floor(nums.length/2); nums.map((item) => { s.add(item); }) if(s.size > n){ answer = n; }else{ answer = s.size; } return answer; } 중복된 값을 제거하는 Set을 이용해 문제를 풀었다. 중복이 제거된 종류 수가 "입력 받은 nums 배열/2" 보다 클 경우, 가져갈 수 있는 폰켓몬의 종류는 어떻게 선택해도 최대 선택할 수 있는 종류의 개수가 n개 이기 때문에 ..

사용 언어 : javascript lv.2 문제 풀이 소요 시간 : 54분 19초 타입 : DFS/BFS #문제 #제출코드 function solution(maps) { let answer = 0; let visited = Array.from(Array(maps.length), ()=> Array(maps[0].length).fill(0)); let dx = [1,0,-1,0]; let dy = [0,1,0,-1]; let queue = []; if(maps[maps.length - 1][maps[0].length - 2] === 0 && maps[maps.length - 2][maps[0].length - 1] === 0){ return -1; } visited[0][0] = 1; queue.push(..

사용 언어 : javascript lv.2 문제 풀이 소요 시간 : NaN 타입 : DFS/BFS #문제 #제출 코드 function solution(numbers, target) { var answer = 0; dfs(0,0) function dfs(sum,index){ if(index === numbers.length){ if(sum === target){ answer += 1; } return; } dfs(sum + numbers[index], index + 1); dfs(sum - numbers[index], index + 1); } return answer; } 재귀 함수를 이용해 DFS로 문제를 푸는 방법. DFS의 구현 방법을 잘 몰라서 하나씩 구현하려다가 시간이 너무 소요되서 결국 힌트를 ..

사용언어 : javascript lv1. 문제 풀이 소요 시간 : 48분 #문제 #제출코드 function solution(s) { let answer = 0; let list = s.split(''); let sameStr = 0; let diffStr = 0; let x = ''; list.map(item =>{ if(x === ''){ x = item; sameStr += 1; } else if(x === item) { sameStr += 1; } else{ diffStr +=1; } if(sameStr === diffStr){ answer += 1; sameStr = 0; diffStr = 0; x = ''; } }) if(sameStr !== 0 || diffStr !== 0){ answer +..