일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- VCS
- Two Pointers
- Medium
- Bellman-Ford
- A* Algorithm
- array
- sorting
- 광연자동차운전면허학원
- LinkedList
- Union Find
- String
- BFS
- leetcode
- ArrayList vs LinkedList
- Easy
- SinglyLinkedList
- Hashtable
- stack
- graph
- greedy
- python3
- Leedcode
- Java
- dfs
- 구현
- DailyLeetCoding
- hash table
- 자료구조
- hash
- heap
- Today
- Total
목록String (4)
Min IT's Devlog
풀이 일자: 23.09.25 난이도: [Easy] 분류: [Hash Table/String/Bit Manipulation/Sorting] 문제 내용 s와 t가 주어졌을 때 s에서 1개의 letter을 추가로 넣고 섞었다고 했을 때 추가된 letter가 뭔지를 return하는 문제이다. ( 실제로는 s를 섞고 임의의 위치에 letter를 넣었다고 나오지만 편의상 넣고 섞었다고 보자) 문제 해결 흐름 1. 사실상 딱 봐도 Hash를 사용해야 하는 것이 자명하다. → 여러개의 알파벳이 중복해서 있을 수 있고 각각의 알파벳과 숫자를 모두 기억해두어야 하기 때문이다. 2. 그렇다면 s와 t중에서 뭐를 dictionary로 바꾸고 나머지를 순회해가면서 비교할지 결정해야 한다. → 나라면 s를 dictionary로 ..
풀이 일자: 23.04.14 난이도: [Medium] 분류: [DP] 문제 내용 s가 주어졌을 때 해당 s의 subsequence 중 가장 긴 회문의 길이를 구하는 문제이다. subsequences > 0개 이상의 원소를 삭제함으로써 반들어지는 substring으로 보면 된다. 회문 > 앞으로 읽어도 뒤로 읽어도 똑같은 것을 의미한다. ex)기러기.. 문제 해결 흐름 1. 처음 이 문제를 보고 떠오르는 알고리즘은 two-pointer나 DP정도뿐이었다. → 그 이유로는 전체를 일단 쪼개서 작은 것부터 처리하고 점차 붙여나가면서 답을 만들어가는 해결방식뿐이었다. dp[i][j] = i ~ j번째의 문자를 이용하여 만들 수 있는 최대 회문의 크기 dp[i][i] = i ~ i번째의 문자를 이용하여 만들 수 ..
풀이 일자: 23.04.12 난이도: [Medium] 분류: [String, Stack] 문제 내용 절대경로를 간단한 캐노니컬 경로로 바꿔서 리턴하는 문제였다. 문제 해결 흐름 1. 가장 먼저 떠오른 방법은 path의 글자를 하나씩 읽어가면서 stack에 넣고 ..와 .에 따라 처리해주는 방법이었다. => 결과는 여러 경우의 수를 따져가면서 처리를 하나씩 해줬는데 실패였다. 이런 예외사항을 고려하면 다른 게 또 걸리고 그런 식이었다. 다른 방식을 생각해보자. 예외의 경우 /./..stack /hi///.././.. class Solution: def simplifyPath(self, path: str) -> str: ans = ['/']; dotCnt = 0; for s in path: if s == '..
풀이 일자: 23.04.04 난이도: [Medium] 분류: [Hash Table, String, Greedy] 문제 내용 s라는 문자열이 주어졌을 때 이를 여러 개의 subString으로 자른다고 했을 때 각각의 subString 내의 중복되는 문자가 unique하게 자를 때 최소한으로 나오는 subString의 갯수를 리턴하라는 문제이다. 문제 해결 흐름 1. 일단 가장 간단하게 생각하면 앞에서부터 탐색하면서 카운팅하면 되겠네. → 앞에서부터 array에 문자를 넣기 시작하다가 array내부에 있는 문자가 나오면 ans+=1을 하고 거기서부터 다시 나온 문자에 대해 history를 저장하면 되겠다. class Solution: def partitionString(self, s: str) -> int:..