일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- vscode
- DP
- DFS
- 동적 계획법
- Database
- Redux
- git
- java
- Data Structure
- db
- BFS
- 그레이들
- Python
- react
- 알고리즘
- CS
- LeetCode
- network
- Graph
- Algorithm
- VIM
- Javascript
- 안드로이드
- frontend
- TypeScript
- 리트코드
- 다이나믹 프로그래밍
- 자바
- 백준
- 프로그래머스
Archives
- Today
- Total
늘 겸손하게
Leetcode Q : Letter Case Permutation (Java) 본문
February LeetCoding Challenge 2021 ( Week 3, day 16 )
Q : Letter Case Permutation

문제 해설
주어진 문자열 안의 각각의 문자는 대문자, 혹은 소문자로 변경 가능하다.
생성가능한 문자열을 List에 저장하여 반환하라. 반환하는 문자열의 순서는 무관.
제한 사항
- 문자열 길이는 1 이상 12 이하
- 문자열은 문자와 숫자로만 이루어져있다
문제 풀이
재귀 함수를 이용하여 문제를 해결할 수 있다.
깊이가 0일때
문자열 : a1b2
깊이가 1일때
문자 a 는 a 또는 A 가 될 수 있으므로
두 가지 경우의 수로 나누어진다.
문자열 : "a1b2" , "A1b2"
깊이가 2일때
문자는 1이므로 아무일도 일어나지 않는다.
문자열 : "a1b2" , "A1b2"
깊이가 3일때
문자 b 는 b 또는 B 가 될 수 있으므로
두 개의 문자열이 각각 두 가지 경우의 수로 나누어진다.
"a1b2" -> "a1b2" , "a1B2"
"A1b2" -> "A1b2", "A1B2
문자열 : "a1b2", "a1B2", "A1b2", "A1B2"

결과
Runtime : 1 ms , Your runtime beats 100.00% of java submissions
Memory Usage : 39.7 MB , Your memory usage beats 68.40% of java submissions

결론
경우의 수를 나열하는 방법(brute-force)을 구현할때 재귀 알고리즘을 적용하면 답을 빠르게 구할 수 있다.
'코딩 문제 > LeetCode' 카테고리의 다른 글
LeetCode Q - Maximum 69 Number (Java) (0) | 2021.02.21 |
---|---|
LeetCode Q - Container With Most Water (Java) (0) | 2021.02.19 |
Leetcode Q : The K Weakest Rows in a Matrix (0) | 2021.02.16 |
Leetcode Q : Valid Anagram (0) | 2021.02.13 |
Leetcode Q : Number of Steps to Reduce a Number to Zero (0) | 2021.02.13 |