본문 바로가기

분류 전체보기

(1938)
(C++) - LeetCode (easy) 1436. Destination City https://leetcode.com/problems/destination-city/description/ 전수조사로 푼 문제였습니다 📕 풀이방법 📔 입력 및 초기화 마지막 목적지를 저장할 curCity를 선언 후 첫 번쨰 길의 목적지값을 저장해줍니다. 📔 풀이과정 1. 다음 길이 없을때까지 for loop를 수행합니다. 2. paths의 원소를 순회하며 curCity를 시작점으로 가진 길을 찾아줍니다. 2-1. 찾았다면 curCity를 그 길의 도착점으로 갱신하고 다음길을 찾았음을 알려줄 지역변수 findNext를 1로 만든 후 break합니다. 3. findNext가 0이면 break합니다. 📔 정답 출력 | 반환 curCity를 반환합니다. 📕 Code 📔 C++ class Solution { pu..
(C++) - LeetCode (easy) 1422. Maximum Score After Splitting a String https://leetcode.com/problems/maximum-score-after-splitting-a-string/description/ 간단 전수조사 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 정답 변수 ms를 선언해 0으로 초기화해줍니다. 📔 풀이과정 1. s의 문자에 대해 loop를 수행하며 현재를 기준으로 왼쪽과 오른쪽 문자를 분리해 지역변수 a,b에 각각 저장합니다. 2. 문자열로부터 원하는 bit개수를 세 개수를 반환하는 countBit함수 문자 a,b에 대해서 수행합니다. 3. ms에 a의 0bit개수와 b의 1bit개수를 더한값과 비교해 최댓값을 저장합니다. 📔 정답 출력 | 반환 ms를 반환합니다. 📕 Code 📔 C++ class Solution { public: int c..
(C++) - LeetCode (easy) 1417. Reformat The String https://leetcode.com/problems/reformat-the-string/description/ 문자열을 다뤄본 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 숫자와 alphabat 문자의 개수 및 내용을 각각 세기 위해 stack digits, alphas를 선언해 저장해줍니다. 📔 풀이과정 1. 비둘기집의 원리에 의해 digit과 alphabat이 번갈아 나오려면 문자 개수의 차이가 1이하여야 가능합니다. 2개 이상 차이 난다면 어떤 방법으로도 연속적으로 두 문자가 나오게 되므로 번갈아 배치할 수 없습니다. 따라서 이 경우에는 ""를 반환합니다.2. 문자의 차이가 1개라면 더 많은 문자가 양 끝에 배치해야 성공합니다. 따라서 digits와 alphas 중 더 많은 문자를 보유한 sta..
(C++) - LeetCode (easy) 1413. Minimum Value to Get Positive Step by Step Sum https://leetcode.com/problems/minimum-value-to-get-positive-step-by-step-sum/description/ 구현 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 정답 value, 누적값 acc를 선언 후 각각 0으로 초기화합니다. 📔 풀이과정 nums의 원소에 대해 loop를 수행합니다. 1. acc에 현재값을 더합니다. 2. 현재 누적값이 1보다 작다면 value값을 1 - acc(조정이 필요한 구간까지의 합)값만큼 더해서 조정해줍니다. 이후 acc는 다시 1로 초기화됩니다. 3. nums의 값이 모두 양수라면 최소 start value인 1을 value에 저장합니다. 📔 정답 출력 | 반환 value를 반환합니다. 📕 Code 📔 C++ class ..
(C++) - LeetCode (easy) 1408. String Matching in an Array https://leetcode.com/problems/string-matching-in-an-array/description/ set 과 문자열 검색 함수 find를 사용해본 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 set s와 vector ans를 선언해줍니다. 📔 풀이과정 1. 자기 자신이 아닌 문자열을 서로 비교해 부분 문자열이라면 해당 값을 s에 insert해줍니다. 2. s의 원소들을 ans에 push_back해줍니다. 📔 정답 출력 | 반환 ans를 반환합니다. 📕 Code 📔 C++ class Solution { public: vector stringMatching(vector& words) { set s; vector ans; for(int i = 0; i < words.size();..
(SQL) - LeetCode (easy) 1407. Top Travellers https://leetcode.com/problems/top-travellers/description/ left join과 COALESECE함수를 사용해 본 문제였습니다. 📕 풀이방법 📔 풀이과정 1. users table에 rides table을 user_id에 대해 left join해줍니다. 이는 left outer join과 같은 keyword입니다. users.id에 대한 값이 rides.user_id에 없으면 자동으로 rides의 column에 null을 채워주게 됩니다.2. group by로 u.id, u.name에 대해 진행한 후 sum값으로 각 user_id의 distance합을 구해 null값인 경우 0으로 만들어 주도록 coalesce함수를 사용해줍니다. 📕 Code 📔 ANSI SQL..
(C++) - LeetCode (easy) 1403. Minimum Subsequence in Non-Increasing Order https://leetcode.com/problems/minimum-subsequence-in-non-increasing-order/description/ 구현 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 1. 전체 원소의 합 totalSum과 부분 수열의 합 sum, 정답 vector ans를 선언 후 적절한 값을 넣어줍니다. accumulate 함수를 사용하면 쉽게 vector 내 원소 합을 구할 수 있습니다.2. nums를 내림차순으로 정렬합니다. 📔 풀이과정 내림차순으로 정렬된 nums의 좌측부터 loop를 돌면서 더하면 최소의 원소개수로 최대의 합을 구할 수 있습니다. 1. sum을 계속 더해가며 ans에 현재 원소를 push_back해줍니다. 2. sum은 포함된 원소들의 합, totalSu..
(C++) - LeetCode (easy) 1399. Count Largest Group https://leetcode.com/problems/count-largest-group/ 전수조사 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 key는 각 자리수 합, value는 그 개수로 map 변수 groupMap, 정답 변수 ans와 largestGroupNum를 선언 후 적잘히 초기화해줍니다. 📔 풀이과정 1. 1 ~ n까지 loop를 수행하며 다음을 수행합니다. 1-1. 현재 원소 i의 각 자리수 합 값을 구합니다. 이 값을 sumDigits에 저장합니다. 1-2. sumDigits를 key로 해 value값을 증가시켜줍니다. 1-3. largestGroupNum에 갱신된 값과 비교해 최댓값을 넣어줍니다. 2. groupMap의 원소를 순회하며 largestGroupNum과 같은 값의 개수..