본문 바로가기

Algorithm/Implementation

(746)
(Python3) - LeetCode (Easy) : 1974.minimum-time-to-type-word-using-special-typewriter https://leetcode.com/problems/minimum-time-to-type-word-using-special-typewriter/시계, 반시계 방향을 생각해 해결한 문제였습니다.📕 풀이방법📔 입력 및 초기화현재 포인터 piv와 움직임 move를 선언 후 각각 'a', 0으로 초기화합니다.📔 풀이과정word의 원소를 순회하며 다음을 진행합니다.1. 시계방향은 현재 문자를 아스키 코드로 변환한 값에서 piv를 아스키 코드로 변환한 값의 차이입니다. 만약 이 차이가 음수라면 같은 방향으로 진행해야하므로 26을 더해줍니다. 2. 반시계 방향은 반대로 piv - 현재 문자가 됩니다. 만약 이 차이가 음수라면 마찬가지로 26을 더해줍니다. 3. 시계, 반시계방향의 움직임의 최솟값을 move에..
(Python3) - LeetCode (Easy) : 2558. Take Gifts From the Richest Pile https://leetcode.com/problems/take-gifts-from-the-richest-pile간단 구현 문제였습니다.📕 풀이방법📔 풀이과정k초만큼 loop를 수행하며 주어진 계산을 수행합니다.1. 최댓값의 index를 찾아 해당 원소를 sqrt후 소수점 이하는 버립니다.📔 정답 출력 | 반환계산된 gifts의 원소들의 합을 반환합니다.📕 Code📔 Python3class Solution: def pickGifts(self, gifts: List[int], k: int) -> int: for _ in range(k): max_pile_idx = gifts.index(max(gifts)) gifts[max_pile_idx]..
(SQL) - LeetCode (easy) 1967. Number of Strings That Appear as Substrings in Word https://leetcode.com/problems/number-of-strings-that-appear-as-substrings-in-word/description/문자열을 다뤄본 문제였습니다.📕 풀이방법📔 입력 및 초기화정답 변수 answer 선언 후 0으로 초기화합니다.📔 풀이과정patterns의 원소를 순회하며 word에 해당 pattern이 존재한다면 부분 문자열이므로 answer를 1씩 증가시켜줍니다.📔 정답 출력 | 반환answer를 반환합니다.📕 Code📔 Python3class Solution: def numOfStrings(self, patterns: List[str], word: str) -> int: answer = 0 for p in p..
(SQL) - LeetCode (easy) 1975. Maximum Matrix Sum https://leetcode.com/problems/maximum-matrix-sum/description구현 문제였습니다.📕 풀이방법📔 입력 및 초기화행 r, 열 c, 음수의 개수 minus_count, 가장 작은 절댓값 min_abs_num, 원소들의 총 합 sum을 선언 후 적절히 초기화합니다.📔 풀이과정1. matrix의 원소를 순회하며 음수의 개수를 minus_count에 세주고 최소 절댓값은 min_abs_num에 저장합니다.📔 정답 출력 | 반환1. minus_count가 짝수라면: 인접한 부분들을 자유롭게 -1로 곱해 부호를 바꿀 수 있으므로 minus_count가 짝수라면 어떻게든 모든 원소를 양수로 만들 수 있습니다. 즉, 2개의 음수가 멀리 떨어져 있더라도 인접한 원소들을..
(Python3) - LeetCode (Medium) : 1072. Flip Columns For Maximum Number of Equal Rows https://leetcode.com/problems/flip-columns-for-maximum-number-of-equal-rows/구현 문제였습니다.📕 풀이방법📔 풀이과정같은 형식을 가진 row들을 정리해 map형태로 저장해줍니다.같은 형태란 일방적으로 비트들을 정렬한 후 비교했을 때 두 행의 원소들이 모두 같다는 의미입니다.python에서는 Counter를 이용해 쉽게 패턴의 개수를 저장할 수 있습니다.1. nomalize함수를 선언해 row의 첫 번째 원소를 기준으로 행의 원소들을 xor한 연산 결과로 저장된 tuple들을 반환하도록 구현합니다.예를 들어, row[0]이 0이고 한 행이 [1,0,1] 라면 for loop를 수행해 row[0]과 xor연산하게 되면 행 그대로 반환됩니다. ro..
(Python3) - LeetCode (Medium) 2257. Count Unguarded Cells in the Grid https://leetcode.com/problems/count-unguarded-cells-in-the-grid/description/2차원 배열을 순회하는 것을 구현해본 문제였습니다.📕 풀이방법📔 입력 및 초기화1. m행 n열 2차원 배열 grid를 선언 후 wall은 'W'로 guard는 'G'로 표기해놓습니다. 2. m행 n열 2차원 배열 checked를 선언 후 모두 0으로 초기화합니다. 3. 4방향 동서남북에 대한 dr, dc를 선언 후 방향에 맞게 선언해줍니다. 4. deque 변수 dp를 선언해 줍니다. 5. 정답 변수 answer를 선언 후 0으로 초기화합니다.📔 풀이과정1. guards를 순회하며 각 위치에 해당하는 grid를 'G'로 표시합니다. 또한 이 위치의 checked또한..
(Python3) - 프로그래머스(연습문제): 카드 뭉치 https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr구현 문제였습니다.📕 풀이방법📔 입력 및 초기화cards1의 index idx1, cards2의 index idx2를 선언 후 0, 0으로 각각 초기화합니다.📔 풀이과정goal의 원소를 순회하며 다음을 진행합니다.1. cards1의 idx1번째 원소가 현재 goal의 문자열과 같다면 바로 뽑아주고 idx1을 1증가시킵니다.2. 이외에 cards2의 idx2번째 원소가 같다면 idx2를 증가시킵니다.3. 1,2번 경우 모두 아니라면 뽑을..
(Python3) - 프로그래머스(코딩 기초 트레이닝): 정수를 나선형으로 배치하기 https://school.programmers.co.kr/learn/courses/30/lessons/181832 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr구현 문제였습니다.📕 풀이방법📔 입력 및 초기화1. 우, 하, 좌, 상의 방향을 위해 dr, dc배열을 선언 후 적절히 초기화합니다. 2. 정답 변수 answer 선언 후 n*n의 2차원 배열을 선언합니다. 3. 값 val선언 후 1로 초기화합니다. 4. 시작행과 열 r, c선언 후 각각 0으로 초기화합니다. 5. 방향 direction을 선언 후 0으로 초기화합니다.📔 풀이과정n*n만큼의 for loop를 수행하며 다음을 진행합니다...