문제링크 ( https://programmers.co.kr/learn/courses/30/lessons/84512 ) 분류 - Recurstion 1. 풀이 힌트 - 만들 수 있는 모든 단어를 재귀를 이용하여 만든다. - 만든 배열에서 target의 index를 구한다. 2. 코드 풀이 function solution(word) { const vowels =["A", "E", "I", "O", "U"]; const wordArr = []; const makeWordArr = (ongoingWord) => { if (ongoingWord.length === 5) { return } for (let i = 0; i < 5; i++) { const curWord = ongoingWord + vowels[i] ..
리트코드 path-sum (easy) 풀이 문제링크 ( https://leetcode.com/problems/path-sum/ ) 문제 해결 힌트 - 재귀의 동작이 복잡해보이지만 결국 호출된 함수는 하나의 리턴값을 같는다는 것을 생각하자. - 주어진 hasPathSum을 이용하여 DFS를 구현한다. 문제 풀이 코드 var hasPathSum = function (root, sum) { if (!root) return false; if (!root.left && !root.right) { return sum === root.val; } else { return ( hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val) ..
문제링크 ( https://programmers.co.kr/learn/courses/30/lessons/12973 ) 분류 - Stack 1. 풀이 힌트 - 알파벳 짝을 O(n)안에서 효율적으로 비교하는 방법을 생각해야 한다. - Stack 구조를 활용하여 풀이한다. 2. 풀이 과정 1) 인자로 받은 string을 배열에 저장한다. 2) 빈 배열을 선언하고 Stack으로 활용한다. 3) string의 길이만큼 반복문을 돌며, 짝이 다를 경우 Stack에 push하고, 같으면 Stack의 Top 위치의 알파벳을 pop한다. 4) *효율성 점수도 있기 때문에, Stack에 push 할 때 마다 현재 Stack에 쌓인 알파벳의 수와 i번 만큼 반복문을 돌았을 때 string 배열에 남은 알파벳을 비교하여 st..
문제 링크 ( https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW8Wj7cqbY0DFAXN& ) 문제 핵심 파악 - 정확히 2봉지를 구입하고, 최대한 들 수 있는 양을 구해야 하기 때문에 구할 수 있는 모든 합 중에서 최대값을 선택해야 한다. 소스 코드 - 과자 2봉지의 합을 저장하는 배열에서 최대 값을 구하기 위해 ArrayList를 역순으로 정렬한 뒤 최대값(0번 째)을 구했다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import ..
- 20200403
- chapter7
- 20200417
- 20200503
- 20200502
- chapter8
- 20200421
- 생활코딩리눅스
- 20200504
- 20200624
- 20200413
- 20200423
- 20200319
- 20200425
- 20200420
- 20200415
- 20200510
- 20200424
- 20200512
- 20200622
- 20200317
- 20200804
- 20201204
- 백준
- 20200429
- 20200330
- 20200428
- 20200427
- likelion
- 20200406
- Total
- Today
- Yesterday