본문 바로가기

분류 전체보기104

[C++] [백준 11004] K번째 수 문제 풀기 전 생각 : /* 뭐야 엄청 쉽네 라고 생각했다 정렬하고 2번째 숫자 출력하면 끝이다 접근법은 맞았다. */ #include #include using namespace std; bool compare(int x, int y) { return x > n >> k; int arr[n]; for(int i=0 ; i> k; for (int i = 0; i > ipt[i]; nth_element(ipt, ipt + k - 1, ipt + n); cout 2021. 7. 27.
[C++] [백준 11650] 좌표 정렬하기 문제 풀기 전 생각 : /* pair 와 sort 함수를 사용하면 쉽게 풀 수 있는 문제이다! */ #include #include using namespace std; bool comp(pair a,pair b){ if(a.first == b.first){ return a.second > n; pair arr[n]; for(int i=0 ; i> arr[i].first >> arr[i].second; } sort(arr,arr+n,comp); for(int i=0 ; i> v[i].second; } sort(v, v+n); for(int i = 0; i < n; i++) cout 2021. 7. 27.
[C++] [백준 1427] 소트인사이드 문제 풀기 전 생각 : /* 숫자의 입력을 문자열로 받는다. 그리고 해당 문자열을 각 글자별로 쪼개어 저장한다. 그리고 정렬 후 출력한다. */ #include #include using namespace std; bool comp(int a,int b){ return a > b; } int main(){ string s; cin >> s; int arr[s.length()]; for(int i=0 ; i 2021. 7. 27.
[C++] [백준 1755] 숫자놀이 문제 풀기 전 생각 : /* 입력 받은 범위의 숫자들을 알파벳으로 변환 후 저장한다. 그리고 소트 함수를 이용해 정렬한다. */ #include #include using namespace std; string num[10] = {"zero","one","two","three","four","five","six","seven","eight","nine"}; bool comp(pair p1,pair p2){ return p1.first > n1 >> n2; int n = n2 - n1 + 1; pair str[n]; for(int i = n1 ; i 2021. 7. 27.
[C++] [LeetCode 169] Majority Element 문제 풀기 전 생각 : /* 먼저 입력받은 백터를 정렬한다. 그 후 저장된 숫자를 하나하나 전 숫자와 비교하며 카운트를 한다. 마지막에 가장 많은 카운트를 기록한 숫자를 출력한다. */ class Solution { public: int majorityElement(vector& nums) { int max=0,max_i=0; int pre=0,pre_i=0; sort(nums.begin(),nums.end()); for(int i=0 ; i max){ max = pre; max_i = pre_i; } pre_i = nums[i]; pre = 1; } else { pre++; } } if(pre > max) max_i = pre_i; return max_i; } }; https://leetcode.com.. 2021. 7. 27.
[C++] [백준 11656] 접미사 배열 문제 풀기 전 생각 : /* 배열을 만든다. 입력된 문자열을 매 반복마다 앞에서 한글자씩 없앤다. substr 사용한다. 그리고 없앤후 해당 문자열을 배열에 넣는다. 그리고 마지막에 출력한다 */ #include #include using namespace std; int main(){ string s; cin >> s; string str[s.length()]; for(int i=0 ; i 2021. 7. 27.
[C++] [백준 10814] 나이순 정렬 문제 풀기 전 생각 : /* 이 문제 또한 정렬 함수를 커스터마이징? 하는 문제인듯 하다. 나이와 이름 두가지 정보가 입력되니 클래스를 만들어 사용하던지 pair 컨테이너?를 사용하면 된다. 나는 페어를 사용하기러 했다. 나이가 같다면 기존의 순서를 유지하면 되니 stable_sort() 함수를 사용하면 된다. */ #include #include #include #include using namespace std; bool compare( pair v1, pair v2 ) { return v1.first > n; vector v(n); for(int i=0 ; i> v[i].first >> v[i].second; } stable_sor.. 2021. 7. 27.
[C++] [LeetCode 1047] Remove All Adjacent Duplicates In String 문제 풀기 전 생각 : /* 스택 컨테이너를 활용한다. 스택이 비었다면 글자를 푸쉬한다. 또는 top 에 있는 글자와 같다면 pop 하고 해당 글자도 패스한다. 만약 같지 않다면 푸쉬한다. 모두 끝난후 스택에 있는 글자를 차례 차례 string 에 넣는다. 그리고 해당 문자열을 리버스 한다. */ /* class Solution { public: string removeDuplicates(string s) { stack sc; string tmp = ""; for(int i=0 ; i 2021. 7. 27.
[C++] [백준 1431] 시리얼 번호 문제 풀기 전 생각 : /* 알고리즘 라이브러리에 있는 소트 함수를 사용한다. 소트 조건은 따로 함수를 만들어 지정한다. */ #include #include #include #include using namespace std; bool comp(string s1,string s2){ int n1=0,n2=0; if(s1.length() == s2.length() ){ for(int i=0 ; i> n; string tmp[n]; for(int i=0 ; i> tmp[i]; } sort(tmp,tmp+n ,comp); for(int i=0 ; i 2021. 7. 26.
[C++] [백준 10867] 중복 빼고 정렬하기 문제 풀기 전 생각 : /* 중복을 허용하지 않고 정렬을 자동으로 해주는 컨테이너인 세트 컨테이너를 사용하면 쉽게 풀 수 있다 */ #include #include using namespace std; int main() { set s; int n,tmp; cin >> n; for(int i=0 ; i> tmp; s.insert(tmp); } for (typename std::set::iterator itr = s.begin(); itr != s.end(); ++itr) { cout N; bool histo[2001] = {false, }; for (int i = 0; i > n; histo[n + 1000] = true; } for (int i = 0; i 2021. 7. 26.
[C++] [LeetCode 234] Palindrome Linked List 문제 풀기 전 생각 : /* listnode 형태로 들어오는 원소들을 vector 컨테이너에 넣어주고 앞과 뒤를 비교한다. listnode 형태의 데이터를 다룰 수 있는지를 보는 문제인것 같다. */ class Solution { public: bool isPalindrome(ListNode* head) { vector v; for(ListNode *ln = head ; ln != NULL ; ln = ln->next){ v.push_back(ln->val); } for(int i=0 ; inext == nullptr) { return true; } ListNode *fast = head, *slow = head, *prev = nullptr; while (fast != nullptr && fast->n.. 2021. 7. 26.
[C++] [11866] 요세푸스 문제 0 문제 풀기 전 생각 : /* 문제를 보니 큐를 사용하는 문제인듯 한데 그렇게 안 풀었다...그래서 헤맸는지도 모르겠다. 배열에 숫자들을 저장 후 와일 반복문으로 출력한 숫자의 갯수가 입력받은 n이 될때까지 반복한다. k번째 숫자부터 출력을 시작한다. 출력이 완료된 숫자는 0으로 만든다. 그리고 다음 반복으로 넘어간다. 다음 반복에서 현재 위치한 숫자가 0이라면 패스한다. 만약 3칸을 이동하지 않은 상태이고 숫자가 0도 아니라면 다음칸으로 넘어가고 카운트를 1증가시킨다. 카운트가 3이 될때마다 출력한다. 출력후 카운트를 0으로 만든다. */ #include using namespace std; int main() { int n,k,count=0; cin >> n; cin >> k; int arr[n]; i.. 2021. 7. 25.