본문 바로가기

Algorithm

(2138)
(C++) - LeetCode (easy) 1768. Merge Strings Alternately https://leetcode.com/problems/merge-strings-alternately/간단 문자열을 다루는 문제였습니다.📕 풀이방법📔 입력 및 초기화1. 정답 변수 mergedString을 선언해줍니다.2. word1과 word2 size중 최대 길이를 maxSize를 선언해 저장해줍니다.3. 확인할 문자의 자리 pivot을 선언해 0으로 초기화해줍니다.📔 풀이과정pivot이 maxSize미만인 동안 while loop를 수행하며 다음을 진행합니다.1. pivot이 word1.size()보다 작다면 word1의 pivot자리 문자를 mergesString에 붙여줍니다.2. pivot이 word2.size()보다 작다면 word2의 pivot자리 문자를 mergesString에 붙여줍니..
(C++) - LeetCode (easy) 1763. Longest Nice Substring https://leetcode.com/problems/longest-nice-substring/전수조사 문제였습니다.📕 풀이방법📔 입력 및 초기화정답변수 substring을 선언해줍니다.📔 풀이과정1. i에서 j길이의 부분 문자열을 구하기 위해 2차원 for문을 구현해줍니다.2. 구한 부분 문자열에서 유효한 문자열인지 검사하기 위한 1차원 for문이 필요하므로 총 3차원 for loop를 수행합니다.3. 3차원 for loop서 구한 부분 문자열이 유효한지는 확인하는 문자의 toupper와 tolower가 각각 존재하면 됩니다.4. 유효한 부분 문자열 이라면 size가 더 큰 값을 substring에 저장합니다.📔 정답 출력 | 반환substring을 반환합니다.📕 Code📔 C++class ..
(C++) - LeetCode (easy) 1758. Minimum Changes To Make Alternating Binary String https://leetcode.com/problems/minimum-changes-to-make-alternating-binary-string/📕 풀이방법📔 입력 및 초기화1. 0101... 의 pattern1을 만들기 위해 바꿀 문자 수 pattern1Altered와 1010...의 pattern2를 만들기 위해 바꿀 문자 수 pattern2Altered를 선언 후 0으로 초기화해줍니다.2. length를 선언해 s의 size값을 저장해줍니다.📔 풀이과정pattern1, pattern2를 length길이만큼 만들어 저장해줍니다.s의 원소를 순회하며 pattern1나 pattern2와 다른 문자가 있다면 그 값을 ~altered에 저장해줍니다.📔 정답 출력 | 반환pattern1과 pattern2..
(C++) - LeetCode (easy) 1752. Check if Array Is Sorted and Rotated https://leetcode.com/problems/check-if-array-is-sorted-and-rotated/간단 구현 문제였습니다.📕 풀이방법📔 입력 및 초기화감소 횟수 cnt를 선언 후 0으로 초기화해주고 nums.size를 변수 sz를 선언해 저장해줍니다.📔 풀이과정1. nums의 원소를 순회합니다. 이웃 원소를 비교해 왼쪽이 오른쪽보다 크다면 cnt를 1씩 증가해줍니다.2. 마지막 원소가 첫 번째 원소보다 클 때도 마찬가지로 cnt를 증가시켜줍니다.📔 정답 출력 | 반환감소 구간이 1을 초과하면 한 번 회전으로 원하는 nums를 만들 수 없으므로 false를, 그 이하는 true를 반환합니다.📕 Code📔 C++class Solution {public: bool chec..
(C++) - LeetCode (easy) 1748. Sum of Unique Elements https://leetcode.com/problems/sum-of-unique-elements/description/📕 풀이방법📔 입력 및 초기화교유 번호의 누적합을 저장할 sum, 숫자별 빈도수를 저장할 numCountMap을 선언후 각각 0과 빈도수를 저장해줍니다.📔 풀이과정numCountMap의 원소를 순회하며 second 즉, 빈도수가 1이라면 sum에 first값을 더해줍니다.📔 정답 출력 | 반환sum을 반환합니다.📕 Code📔 C++class Solution {public: int sumOfUnique(vector& nums) { int sum = 0; map numCountMap; for(auto n : nums) { ..
(C++) - LeetCode (easy) 1742. Maximum Number of Balls in a Box https://leetcode.com/problems/maximum-number-of-balls-in-a-box/description/구현 문제였습니다.📕 풀이방법📔 입력 및 초기화각 limit로부터 얻은 ball 번호를 key로, 해당 번호의 개수를 value로 갖는 ballNumCountMap을 선언해줍니다. 📔 풀이과정1. low ~ high limit에 대해 for loop를 수행하며 각 ball 번호별 개수를 저장해줍니다.2. ballNumCountMap의 원소를 순회하며 가장 많이 나온 번호의 공 개수를 maxBalls에 저장해줍니다.📔 정답 출력 | 반환maxBalls를 반환합니다.📕 Code📔 C++class Solution {public: int getSum(int lim..
(C++) - LeetCode (easy) 1736. Latest Time by Replacing Hidden Digits https://leetcode.com/problems/latest-time-by-replacing-hidden-digits/description/문자열을 다뤄보는 문제였습니다.📕 풀이방법📔 풀이과정각 time의 자리별 ?가 들어올 경우를 따져 적절한 숫자로 치환해줍니다.즉, xx:xx의 형식에서 x에 해당하는 부분의 index를 0,1,3,4일 때 '?'가 input으로 들어오므로 해당 경우를 확인해줍니다.1. time[0]이 '?'인 경우   1-1. 그 다음자리인 time[1]이 '4'이상이면서 ?가 아니라면 :왼편 문자열이 "?4" 또는 "?5" ...이므로 time[0]은 1이어야합니다.   1-2. 이외의 경우에는 :왼편 문자열이 "?0", "?1", "?2", "?3" 이 되므로 time[..
(C++) - LeetCode (easy) 1732. Find the Highest Altitude https://leetcode.com/problems/find-the-highest-altitude/description/📕 풀이방법📔 입력 및 초기화가장 높았던 고도 maxAltitude와 현 고도 curAltitude를 선언 후 0으로 각각 초기화해줍니다.📔 풀이과정gain의 원소를 순회하며 curAltitude를 갱신한 후 maxAltitude 중 최댓값을 구해 갱신해줍니다.📔 정답 출력 | 반환maxAltitude를 반환합니다.📕 Code📔 C++class Solution {public: int largestAltitude(vector& gain) { int maxAltitude = 0; int curAltitude = 0; for(auto g..