분류 전체보기 (2313) 썸네일형 리스트형 (Python3) - LeetCode (Medium) : 2337. Move Pieces to Obtain a String https://leetcode.com/problems/move-pieces-to-obtain-a-string문자열을 다뤄본 문제였습니다.📕 풀이방법📔 입력 및 초기화_는 이동할 수 있는 공간 즉, 비어 있으므로 고려할 필요 없습니다. 만들어야되는 'L', 'R'의 index를 함께 배열 start_idx_char, target_idx_char를 선언해 저장합니다.📔 풀이과정1. start_idx_char과 target_idx_char의 길이가 다르다면 이동해서 target을 만들 수 없으므로 False를 반환합니다. 2. 빈 공간을 제거했는데 start의 'L', 'R'배치와 target의 'L', 'R'배치의 순서가 다르다면 만들 수 없으므로 False를 반환합니다. 3. 같은 길이와 순서를 가진.. (Python3) - LeetCode (Medium) : 2825. Make String a Subsequence Using Cyclic Increments https://leetcode.com/problems/make-string-a-subsequence-using-cyclic-increments two pointer로 해결한 문제였습니다.📕 풀이방법📔 입력 및 초기화str1의 index i와 str2의 index j를 선언 후 각각 0으로 초기화합니다.📔 풀이과정* 한번에 str1의 여러 index를 골라 다음 알파벳으로 바꿀 수 있습니다. 따라서 i, j를 옮기면서 만들 수 있는지 여부를 비교합니다.i가 str1의 길이 미만이면서 j도 str2의 길이 미만인 동안 while loop를 수행하며 다음을 진행합니다. 1. 현재 단어 c1, c2는 str1[i], str2[j]이므로 지역변수로 선언 후 각각 저장해줍니다. 2. c1이 c2와 같거나 c1.. (Python3) - LeetCode (Easy) : 1455. Check If a Word Occurs As a Prefix of Any Word in a Sentence https://leetcode.com/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence/description📕 풀이방법📔 입력 및 초기화1. sentence를 선언 후 공백으로 문장을 나눠 split해줍니다. 📔 풀이과정1. sentence의 원소를 순회하며 searchWord가 접두어인 경우 해당 index + 1을 반환합니다.📔 정답 출력 | 반환-1을 반환합니다.📕 Code📔 Python3class Solution: def isPrefixOfWord(self, sentence: str, searchWord: str) -> int: sentence = sentence.split(' ') .. (Python3) - LeetCode (Easy) : 1971. Find if Path Exists in Graph https://leetcode.com/problems/find-if-path-exists-in-graph/BFS 문제였습니다.📕 풀이방법📔 입력 및 초기화1. 삽입삭제에 O(1)이 걸리는 deque를 사용하기 위해 변수 dq, 방문 여부 판단을 위한 check배열, 인접리스트 형태로 간선을 저장할 edges_map을 선언 후 적절히 초기화합니다. 2. 인접리스트 만들 때 양 방향 그래프인 점 유의하며 넣어줍니다.📔 풀이과정1. 시작점은 source이므로 dq에 source를 넣어주고 방문처리해줍니다. 2. dq가 비어 있는 동안 원소를 pop해 destination인지 비교하고 맞다면 도착가능하므로 True를 바로 반환합니다. 아니라면 인접리스트에 방문 가능한 다음 node를 찾아 dq에 app.. (Python3) - LeetCode (Hard) : 2290. Minimum Obstacle Removal to Reach Corner https://leetcode.com/problems/minimum-time-to-visit-a-cell-in-a-griddijkstra문제였습니다.📕 풀이방법📔 입력 및 초기화grid 높이 height, 너비 width를 선언 후 적절히 초기화합니다.📔 풀이과정특정 r행 c열에 도착할 때의 시간이 가변적이므로 0-1 bfs는 사용이 불가합니다. 따라서 최소의 가중치 중심으로 경로를 먼저 탐색하기 위해 dijkstra함수를 구현해 사용합니다. 1. 방향을 위한 배열 dr, dc와 min heap인 pq, r행 c열에 방문한 시간 checked선언 후 시작점을 넣어주고 check해줍니다. 2. pq에서 현재 방문한 time, r행, c열을 pop해줍니다. 만약 현재 r행 c열이 도착지점이라면 현재 .. (Spring) - 객체 생명주기 🍳머리말객체 생명주기는 앱의 확장성, 안정성에 중요합니다. 어떻게 관리하는지에 대해 알아봅니다.📕 정의📔 객체프로그램에서 데이터와 데이터를 처리하는 메서드를 하나로 묶은 독립적 단위📔 객체 생명주기란객체가 생성, 초기화, 소멸 되는 전 과정을 의미. Spring에서는 IoC 컨테이너가 객체 생명주기를 관리하며 개발자가 이 과정을 직접 처리하지 않아도 되도록 지원📕 주요 특징📔 객체 생명주기 단계📑 컨테이너 초기화ApplicationContext가 초기화되면서 XML 설정 파일, Java config 클래스, 또는 어노테이션 스캔을 통해 Bean 정보 읽음객체 클래스 의존성 초기화/소멸 메서드 포함📑 생성IoC 컨테이너가 @Component, @Bean 또는 XML에 정의된 bean.. (Python3) - LeetCode (Hard) : 2290. Minimum Obstacle Removal to Reach Corner https://leetcode.com/problems/minimum-obstacle-removal-to-reach-corner/?envType=daily-question&envId=2024-11-280-1 bfs로 풀어본 문제였습니다.📕 풀이방법📔 입력 및 초기화높이 height, 너비 width, 방향 탐색을 위한 배열 dr, dc를 선언 후 적절히 초기화합니다.📔 풀이과정bfs함수를 구현합니다.1. 탐색에 우선순위를 주기 위해 push pop이 상수 시간 복잡도를 가지는 deque변수 dq를 선언 후 사용합니다. 2. 재방문하지 않기 위한 checked배열을 width * height만큼 2차원으로 선언해줍니다. 3. 시작점 0행0열 0번 벽을 부숨을 의미하는 tuple (0,0,0)을 dq에.. (Python3) - LeetCode (Medium) : 2924. Find Champion II https://leetcode.com/problems/shortest-distance-after-road-addition-queries-idijkstra문제였습니다.📕 풀이방법📔 입력 및 초기화1. 인접리스트 형태로 map edges선언 후 key에는 node번호, value에는 현 node에 연결된 node들을 배열로 저장합니다. 2. 각 query별 최소거리 배열 distances 선언 후 빈 배열로 초기화합니다.📔 풀이과정n이 500이므로 O(n^3)의 시간복잡도로 가진 알고리즘은 사용할 수 없습니다. 단순 bfs나 플로이드 와샬을 사용한다면 시간초과가 뜹니다. 따라서 시간복잡도가 O((V+E)log(E))인 dijkstra를 사용해 해결합니다. 1. dijkstra를 구현합니다. 1-1.. 이전 1 2 3 4 5 6 ··· 290 다음