본문 바로가기
반응형

leetcode27

[LeetCode] 242. Valid Anagram (C++) 문제 링크 코딩하기 전 생각하기 /* s와 t의 알파벳 count를 저장하는 배열을 만들자. s와 t의 길이가 다르면 false를 반환한다. s와 t를 순회하면서 count 배열의 값을 만들어 준다. 두 개의 count 배열을 비교해서 같으면 true, 다르면 false를 반환한다. */ 코드 class Solution { public: bool isAnagram(string s, string t) { if (s.length() != t.length()) return false; int s_count[26] = {0,}; int t_count[26] = {0,}; for (int i = 0; i < s.length(); i++) { s_count[s[i] - 'a']++; t_count[t[i] - 'a.. 2021. 9. 3.
[LeetCode] 338. Counting Bits (C++) 문제 링크 코딩하기 전 생각하기 /* 벡터를 생성한다. 0부터 n까지 반복한다. 값이 i인 a 변수와, 값이 0인 cnt 변수를 생성한다. a가 0이 될 때 까지 반복한다. a를 2로 나눈 나머지가 1이면 cnt에 1을 더한다. a를 2로 나눈다. cnt 값을 벡터에 추가한다. 벡터를 반환한다. */ 코드 class Solution { public: vector countBits(int n) { vector v; for ( int i = 0; i 0 ) { if ( a % 2 == 1 ) cnt++; a /= 2; } v.push_back(cnt); } return v; } }; 느낀점 딱히 없다. (주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다. 댓글 환영합니다! 2021. 8. 5.
[LeetCode] 202. Happy Number (C++) 문제 링크 코딩하기 전 생각하기 /* 기록을 저장할 unordered_set을 생성한다. n이 1이 될 때까지 반복한다. 숫자 변수에 각 자릿수를 제곱한 값을 더한다. 숫자 변수가 set에 존재하면 false를 반환한다. 숫자 변수를 set에 추가한다. n에 숫자 변수를 저장한다. 반복문에서 벗어나면 true를 반환한다. */ 코드 class Solution { public: bool isHappy(int n) { unordered_set us; while ( n != 1 ) { int sum = 0; string s = to_string(n); for ( auto c : s ) sum += (c - '0') * (c - '0'); if ( us.find(sum) != us.end() ) return f.. 2021. 8. 1.
[LeetCode] 13. Roman to Integer (C++) 문제 링크 코딩하기 전 생각하기 /* 문자열을 순회하면서 해당 숫자를 더해준다. 4*와 9* 숫자에 대한 예외처리를 해준다. */ 코드 class Solution { public: int romanToInt(string s) { int n = 0; for ( int i = 0; i 0 && s[i-1] == 'C') n += 800; else n += 1000; } if ( s[i] == 'D' ) { if ( i > 0 && s[i-1] == 'C') n += 300; else n += 500; } if ( s[i] == 'C' ) { if ( i > 0 && s[i-1] == 'X') n += 80; else.. 2021. 8. 1.
[LeetCode] 1. Two Sum (C++) 문제 링크 코딩하기 전 생각하기 /* brute force 방식을 이용하자. */ 코드 class Solution { public: vector twoSum(vector& nums, int target) { vector v; for ( int i = 0; i < nums.size(); i++ ) { for ( int j = i + 1; j < nums.size(); j++ ) { if ( i == j ) continue; if ( nums[i] + nums[j] == target ) { v.push_back(i); v.push_back(j); return v; } } } return v; } }; 느낀점 LeetCode의 1번 문제라니 신기하다. (주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알.. 2021. 8. 1.
[LeetCode] 26. Remove Duplicates from Sorted Array (C++) 문제 링크 코딩하기 전 생각하기 /* 벡터를 set으로 변환하자. */ 코드 class Solution { public: int removeDuplicates(vector& nums) { set s; vector v; for ( int n : nums ) s.insert(n); for ( int i : s ) v.push_back(i); nums = v; return s.size(); } }; 느낀점 Two Pointers를 써야하는 문제라고 한다. (주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다. 댓글 환영합니다! 2021. 8. 1.
[LeetCode] 733. Flood Fill (C++) 문제 링크 코딩하기 전 생각하기 /* (sr, sc) 좌표에 있는 색상을 oldColor에 저장한다. (sr, sc) 좌표부터 BFS를 시작한다. 이미 탐색 했거나 (nx, ny)의 색상이 oldColor가 아니면 넘어간다. 아니라면, 방문했다는 표시를 한다. (nx, ny)의 색상을 newColor로 바꾼다. image를 반환한다. */ 코드 class Solution { public: int vis[50][50]; int n, m; int dx[4] = {1, 0, -1, 0}; int dy[4] = {0, 1, 0, -1}; vector floodFill(vector& image, int sr, int sc, int newColor) { n = image.size(), m = image[0].siz.. 2021. 7. 31.
[LeetCode] 206. Reverse Linked List (C++) 문제 링크 코딩하기 전 생각하기 /* nullptr에서 시작하는 rhead 포인터를 선언한다. head를 traverse한다. rhead 값을 prev에 저장한다. rhead에 head 값을 저장한다. rhead->next에 prev 값을 저장한다. rhead를 반환한다. */ 코드 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; *.. 2021. 7. 31.
[LeetCode] 234. Palindrome Linked List (C++) 문제 링크 코딩하기 전 생각하기 /* Linked List를 traverse 하면서 배열로 변환한다. 순서를 반전 시킨 배열과 기존 배열을 비교하여 같으면 true를, 다르면 false를 반환한다. */ 코드 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: bool isPalindro.. 2021. 7. 31.
[LeetCode] 1047. Remove All Adjacent Duplicates In String (C++) 문제 링크 코딩하기 전 생각하기 /* char와 int pair로 이루어진 덱을 생성한다. 문자열을 순회한다. 덱이 비었거나 문자가 덱의 back에 있는 문자와 다르면 문자와 1을 pair로 묶어 덱에 추가한다. 문자가 덱의 back에 있는 문자와 일치하면 back의 해당 숫자에 1을 더한다. back의 숫자가 2가 되면 back을 pop한다. answer 문자열을 생성하고 반복문을 활용하여 문자열을 채운다. answer 문자열을 반환한다. */ 코드 class Solution { public: string removeDuplicates(string s) { deque dq; for ( auto c : s ) { if ( dq.empty() || dq.back().first != c ) dq.push_b.. 2021. 7. 31.
반응형