본문 바로가기

Algorithm/Implementation

(512)
(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) 1560. Most Visited Sector in a Circular Track https://leetcode.com/problems/most-visited-sector-in-a-circular-track/description/순환을 구현한 문제였습니다.📕 풀이방법📔 입력 및 초기화정답 vector visited, sector별 방문자를 저장할 vector visitedPerSector를 선언 후 round 0의 시작 sector를 방문처리합니다.📔 풀이과정1. 각 round별 loop를 수행합니다.2. start는 round[i-1], end는 round[i]가 되며 내부에서 while loop를 수행합니다.   2-1. end가 아닐때까지 start를 증가시켜줍니다.   2-2. 이 때 한 바퀴 돌았다는 것을 처리하기 위해 나머지 연산을 사용해 그 결과에 1을 더하는 방식으..
(C++) - LeetCode (easy) 1556. Thousand Separator https://leetcode.com/problems/thousand-separator/description/구현문제였습니다.📕 풀이방법📔 입력 및 초기화n의 문자열 형태 str과 정답변수 ans, stack st, 천의 자리를 확인할 cnt를 선언 후 적절히 초기화해줍니다.📔 풀이과정1. n이 1234일 때 n의 오른쪽부터 왼쪽으로 for lloop를 수행하며 다음을 진행합니다.  1-1. stack에 넣으면 stack에 [4,3,2,1] 순으로 원소가 저장되게 됩니다.  1-2. 이 때 cnt를 1씩 증가시키면서 3의 배수일 때마다 '.'을 하나씩 추가로 st에 push해주면 [4,3,2,.,1] 됩니다.2. while loop를 수행하면서 st에 top을 ans 뒤에 붙여주고 pop해줍니다.?..
(C++) - LeetCode (easy) 1550. Three Consecutive Odds https://leetcode.com/problems/three-consecutive-odds/description/간단 구현 문제였습니다.📕 풀이방법📔 풀이과정1. arr.size() 2. arr의 원소를 순회하면서 3개의 연속된 원소가 홀 수라면 true를 아니면 false를 반환합니다.* 1번의 이유는 아래 2번이 수행되면서 3개의 연속된 원소를 비교시 arr의 index로 접근하게 되는데, 이 때 overflow가 나지 않기 위함입니다.📕 Code📔 C++class Solution {public: bool threeConsecutiveOdds(vector& arr) { if (arr.size() *더 나은 내용을 위한 지적, 조언은 언제나 환영합..
(C++) - LeetCode (easy) 1518. Water Bottles https://leetcode.com/problems/water-bottles/description/ 간단 구현 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 먼저 마시고 시작합니다. 정답 변수 drank를 선언해 numBottles만큼 값을 할당합니다. 📔 풀이과정 더 이상 교환 불가할 때까지 while loop를 돌며 다음을 수행합니다. 1. 교환 가능한 물병 개수 exchanged = numBottles / numExchange 입니다. 이를 지역 변수를 선언해 저장합니다. 2. 이외의 물병 개수 surplus = numBottles % numExchange가 됩니다. 이를 지역 변수를 선언해 저장합니다. 3. 교환한 물병 개수만큼 마셔줍니다. 즉, drank에 exchanged값을 누적해 더해줍니..
(C++) - LeetCode (easy) 1507. Reformat Date https://leetcode.com/problems/number-of-good-pairs/ 📕 풀이방법 📔 입력 및 초기화 정답 변수 cnt를 선언 후 0으로 초기화해줍니다. 📔 풀이과정 nums의 원소를 순회하며 조건에 맞는 경우 cnt를 1씩 증가시켜줍니다. 📔 정답 출력 | 반환 cnt를 반환합니다. 📕 Code 📔 C++ class Solution { public: int numIdenticalPairs(vector& nums) { int cnt = 0; for(int i = 0; i < nums.size(); i++) { for(int j = 0; j < nums.size(); j++) { if(nums[i] == nums[j] && i < j) cnt++; } } return cnt; } }..
(C++) - LeetCode (easy) 1496. Path Crossing https://leetcode.com/problems/can-make-arithmetic-progression-from-sequence/ 간단 구현 문제였습니다. 📕 풀이방법 📔 풀이과정 arr에 대해 loop를 수행하며 양 옆 인접 원소의 차이가 다른지 여부를 확인합니다. 📔 정답 출력 | 반환 양 옆 인접 원소끼리의 차이가 다르다면 false를 아니면 다 같은지 확인 후 true를 return합니다. 📕 Code 📔 C++ class Solution { public: bool canMakeArithmeticProgression(vector& arr) { sort(arr.begin(), arr.end()); for(int i = 1; i < arr.size() - 1; i++) { if (arr[i] ..
(C++) - LeetCode (easy) 1496. Path Crossing https://leetcode.com/problems/path-crossing/description/ 구현 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 1. x, y 좌표를 저장할 구조체 Coord 를 선언해줍니다.2. map을 사용할 건데 구조체를 key로 설정시 operator