목록Algorithm/Data Structure (6)
DOTY
https://leetcode.com/problems/majority-element/?envType=study-plan-v2&envId=top-interview-150처음 문제를 풀 때 단순히 배열에 넣어야겠다고 생각했지만 너무 많은 숫자를 다룰 수 있기에 다른 방법을 생각했다.class Solution {public: int majorityElement(vector& nums) { unordered_map elements; int max = 0, max_num = 0; for(int& i : nums) { elements[i]++; if(max unordered_map을 활용하면 삽입도 O(1), 탐색도 O(..
https://leetcode.com/problems/remove-element/?envType=study-plan-v2&envId=top-interview-150나의 첫 코드는 이러했다.class Solution {public: int removeElement(vector& nums, int val) { int count = nums.size(); for(int i = 0; i 정답은 맞지만 해당 코드의 문제는 시간 복잡도.O(N^2)를 사용하게 된다.그 이유는 erase 함수. eraseerase 함수는 벡터의 원소를 삭제하는 것 까지는 좋지만 원소들을 하나씩 앞으로 당겨야하기 때문에 최악의 경우 O(N)의 복잡도를 가진다.따라서 시간을 단축시키기 위해서는 새로운 ..

Merge Sorted Array - LeetCode처음 사용해 보는 사이트로 프로그래머스처럼 내가 Input을 넣지 않아 줘도 좋다.그리고 Follow Up 이라는 추가 도전?이라는 것도 있는데 문제를 다 풀어도 더 생각하게 한다. class Solution {public: void merge(vector& nums1, int m, vector& nums2, int n) { int i = 0, j = 0; vector answer; while(i 원래 내가 생각했던 코드.어이쿠야....지금까지 제출한 사람들의 런타임과 메모리를 비교할 수 있다.class Solution {public: void merge(vector& nums1, int m, vector..
코딩테스트 연습 - 두 큐 합 같게 만들기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 시간 초과 해결에 애쓴 문제 #include using namespace std; int solution(vector queue1, vector queue2) { int answer = -2; int cnt = 0; int q1 = 0; int q2 = 0; int queue_size = queue1.size(); long sum1 = 0; long sum2 = 0; for(int i = 0; i < queue..
1874번: 스택 수열 (acmicpc.net) 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 2년 전에 풀었지만 왜인지 계속 시간 초과만 뜨던 문제. 생각보다 해결법은 간단했다. #include using namespace std; int main(void) { int num; int j = 0; int arr[100001] = {0, }; cin >> num; vector answer; stack s; for(int i =..
4949번: 균형잡힌 세상 (acmicpc.net) 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 작은 실수 하나 때문에 고민한 문제 방법은 여는 괄호는 스택에 넣고 닫는 괄호는 스택 top과 비교하여 괄호가 일치하면 pop 다르면 break. #include using namespace std; int main(void) { stack cover; while(1) { bool check = false; while(!cover.empty()) { cover.pop(); } string ..