본문 바로가기

Algorithm

(2139)
(C++) - LeetCode (easy) 1603. Design Parking System https://leetcode.com/problems/design-parking-system/description/간단 구현 문제였습니다.📕 풀이방법📔 입력 및 초기화instance 생성자 시 carPerSize를 resize해주고 가능한 공간을 size별로 초기화해줍니다.📔 풀이과정catType별 가용공간을 carPerSize에서 찾아 주차 가능 여부를 판단합니다.1. 해당 type에 주차된다면 가용공간은 carPerSize[carType] - 1 입니다. 해당 수가 음수라면 주차할 수 없으니 false를 반환합니다.2. carPerSize[carType]--해주고 차 주차가 가능하니 true를 반환합니다.📕 Code📔 C++class ParkingSystem {public: vector..
(C++) - LeetCode (easy) 1598. Crawler Log Folder https://leetcode.com/problems/crawler-log-folder/description/간단 구현 문제였습니다.📕 풀이방법📔 입력 및 초기화정답 변수 ans선언 후 0으로 초기화해줍니다.📔 풀이과정logs의 원소를 순회하며 다음 경우에 따라 ans를 조정합니다.1. ../인 경우: ans가 main경로가 아닌경우 parent로 이동하므로 1빼줍니다.2. ./인 경우: 자기 자신으로 돌아가므로 아무것도 하지않고 continue합니다.3. 이외의 경우: 하위 directory로 이동하므로 ans를 1씩 더해줍니다.📔 정답 출력 | 반환ans를 반환합니다.📕 Code📔 C++class Solution {public: int minOperations(vector& logs)..
(C++) - LeetCode (easy) 1592. Rearrange Spaces Between Words https://leetcode.com/problems/rearrange-spaces-between-words/description/문자열을 다루는 문제였습니다.📕 풀이방법📔 입력 및 초기화1. 전체 공백 개수 totalSpace를 선언 후 text의 공백 개수를 세줍니다.2. text를 공백으로 구분해 split해서 정확히 단어들의 vector를 반환하는 split함수를 구현해 그 결과를 splited에 저장합니다.3. 단어개수 wordCount 선언 후 값을 저장해줍니다.4. 단어개수가 1개라면 필요한 공백은 0이며 단어개수가 2개인 것 부터 단어 사이에 공백을 균등배분 해줘야 합니다. 균등배분할 공백 개수 spaceBetweenWords선언 후 값을 저장합니다.5. 균등 배분 후 남은 공백 개수 ..
(C++) - LeetCode (easy) 1588. Sum of All Odd Length Subarrays https://leetcode.com/problems/sum-of-all-odd-length-subarrays/description/전수조사 문제였습니다.📕 풀이방법📔 입력 및 초기화정답 변수 ans를 선언 후 0으로 초기화해줍니다.📔 풀이과정1. 1, 3, 5.. 순으로 loop를 수행하며 홀수개의 배열 길이 len에 대해 subarray의 범위를 구해줍니다.2. subarray의 원소 합을 구해 sum에 누적해 더해줍니다.3. ans에 sum값을 더해줍니다.📔 정답 출력 | 반환ans를 반환합니다.📕 Code📔 C++class Solution {public: int sumOddLengthSubarrays(vector& arr) { int ans = 0; for..
(C++) - LeetCode (easy) 1582. Special Positions in a Binary Matrix https://leetcode.com/problems/special-positions-in-a-binary-matrix/description/전수조사 문제였습니다.📕 풀이방법📔 입력 및 초기화행 row, 열 col, 정답 변수 ans, 어떤 행의 1이 나온 개수 rowCount, 열이 나온 개수 colCount를 선언 후 적절한 값으로 초기화합니다.📔 풀이과정1. mat의 원소를 순회하면서 rowCount, colCount값을 누적해 더해줍니다.2. 다시 mat을 순회하면서 어떤 행 i, 열 j값이 1이면서 그 행의 rowCount가 1이며 열의 colCount가 1이라면 special한 값이므로 ans를 1씩 더해줍니다.📔 정답 출력 | 반환ans를 반환합니다.📕 Code📔 C++class ..
(C++) - LeetCode (easy) 1576. Replace All ?'s to Avoid Consecutive Repeating Characters https://leetcode.com/problems/replace-all-s-to-avoid-consecutive-repeating-characters/description/간단 문자열 다루는 문제였습니다.📕 풀이방법📔 풀이과정s의 원소에 대해 loop를 수행합니다.1. 일반 alphabat이면 continue합니다.2. '?'라면 'a'부터 'z'까지 loop를 수행하며 다음을 진행합니다.  2-1. 왼쪽 인접 alphabat이나 오른쪽 인접 alphabat이 같다면 continue합니다.  2-2. 인접 원소 중 겹치지 않는 alphabat을 찾아 s[i]를 교체해줍니다. 📔 정답 출력 | 반환s를 반환합니다.📕 Code📔 C++class Solution {public: string ..
(C++) - LeetCode (easy) 1572. Matrix Diagonal Sum https://leetcode.com/problems/matrix-diagonal-sum/description/index를 다뤄 정답을 구해보는 문제였습니다.📕 풀이방법📔 입력 및 초기화1. 정사각형 matrix의 한 변 sideLength를 선언 후 mat.size()값을 저장합니다.2. 정답 변수 sum을 선언 후 0으로 초기화해줍니다.📔 풀이과정1. mat의 원소를 ↘ 방향으로 순회하며 원소를 sum에 더해줍니다. 단, 홀수라면 중복으로 값이 더해지므로 더하지 않고 건너뛰어 줍니다.2. mat의 원소를 ↗ 방향으로 순회하며 원소를 sum에 더해줍니다.📔 정답 출력 | 반환sum을 반환합니다.📕 Code📔 C++class Solution {public: int diagonalSum(v..
(C++) - LeetCode (easy) 1566. Detect Pattern of Length M Repeated K or More Times https://leetcode.com/problems/detect-pattern-of-length-m-repeated-k-or-more-times/description/전수조사 문제였습니다.📕 풀이방법📔 입력 및 초기화연속된 pattern 개수 patternCount 선언 후 0으로 초기화해줍니다.📔 풀이과정시작점 start부터 arr.size() - 1까지 loop를 수행하며 다음을 진행합니다. 1. start ~ m-1까지 구간을 한 pattern으로 정하고 m만큼 건너뛰면서 for loop를 수행해 매 start+m+i ~ start+m*2-1 + i 구간별 pattern이 맞는지 확인하는 isPattern함수를 수행합니다.2. pattern이 맞으면 patternCount를 1씩 증가시켜줍니..