본문 바로가기

Algorithm

(1741)
(SQL) - LeetCode (easy) 1527. Patients With a Condition https://leetcode.com/problems/patients-with-a-condition/ 📕 풀이방법 📔 정답 출력 | 반환 LIKE절을 사용해 DIAB1으로 시작하는 conditions를 select합니다. 📕 Code 📔 ANSI SQL SELECT * FROM patients WHERE conditions LIKE 'DIAB1%' OR conditions LIKE '% DIAB1%'; *더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
(C++) - LeetCode (easy) 1518. Water Bottles https://leetcode.com/problems/count-odd-numbers-in-an-interval-range/description/ 간단 산수 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 정답 변수 ans를 선언해 줍니다. 📔 풀이과정 1. low와 high 사이에는 high - low만큼의 간극이 존재하며 (high - low) / 2개의 홀수가 존재합니다. 2. 따라서 ans의 초기값은 (high - low) / 2에서 low 또는 hight가 홀수라면 ans에 한 개씩 더해주면 됩니다. 📔 정답 출력 | 반환 ans를 반환합니다. 📕 Code 📔 C++ class Solution { public: int countOdds(int low, int high) { int ans = (hi..
(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값을 누적해 더해줍니..
(SQL) - LeetCode (easy) 1507. Reformat Date https://leetcode.com/problems/find-users-with-valid-e-mails/ 정규 표현식을 사용해본 문제였습니다. 📕 풀이방법 📔 풀이과정 첫 글자는 alphabat, 다음부터는 alphabat, '.', '_', '-', 숫자가 존재하며 domain name이 있는 valid 한 email 주소만 찾아 select합니다. 📕 Code 📔 MySQL SELECT user_id, name, mail FROM Users WHERE mail REGEXP '^[a-zA-Z][a-zA-Z0-9._-]*@leetcode\\.com$'; *더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
(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) 1507. Reformat Date https://leetcode.com/problems/reformat-date/description/ map을 사용해본 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 1. 한 문자열을 공백을 구분자로 잘라 vector 으로 반환하는 split 함수를 구현합니다. stringstream을 사용하면 됩니다.2. split된 문자열을 dateInfo에 저장합니다. key는 변환할 문자, value에는 변환될 문자를 저장할 monthMap, dayMap를 선언 후 맞는 형태로 저장합니다. 11th, 12th 외 숫자 1의 자리가 1또는 2라면 st, nd를 붙여야 됨에 주의합니다. 📔 풀이과정 split 된 dateInfo의 day, month, year에 해당하는 부분을 지역변수를 선언해 저장합니다. 📔 정답..
(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