본문 바로가기
반응형

전체 글172

[프로그래머스] 가장 큰 수 (C++) 문제 링크 코딩하기 전 생각하기 /* 숫자를 이어 붙인 값을 비교하기 위해 숫자 벡터를 문자열 벡터로 변환한다. comp 함수를 선언한다. 두 숫자를 그대로 붙여본 것과 순서를 바꿔서 붙여본 것을 비교한다. 다른 숫자와 비교했을 때 더 큰 값이 만들어지는 숫자를 앞으로 오게한다. sort 함수로 벡터를 정렬한다. 벡터를 문자열로 변환하고 문자열을 반환한다. */ 코드 #include using namespace std; bool comp(string a, string b) { return a + b > b + a; } string solution(vector numbers) { string answer = ""; vector str_numbers; for (int i : numbers) str_numbe.. 2021. 8. 3.
[프로그래머스] 모의고사 (C++) 문제 링크 코딩하기 전 생각하기 /* 학생들의 반복되는 찍기 패턴을 파악한 후 각각 벡터로 저장하자. count 배열을 생성한다. answers 벡터를 순회한다. i를 패턴 벡터의 길이로 나눈 나머지 값을 이용하여 정답과 학생의 답이 일치하면 count에 1을 더해준다. count 배열의 최대값을 구하고 최대값만큼 정답을 맞춘 학생들의 번호를 answer 벡터에 저장한다. answer 벡터를 반환한다. */ 코드 #include using namespace std; vector solution(vector answers) { vector answer; vector s1 = {1, 2, 3, 4, 5}; vector s2 = {2, 1, 2, 3, 2, 4, 2, 5}; vector s3 = {3, 3, .. 2021. 8. 2.
[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.
반응형