분류 전체보기539 [Programmers] Lv 2. 피보나치 수 https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include using namespace std; int solution(int n) { vector dp = { 0, 1 }; dp.resize(n + 1); for (int i = 2; i 2023. 5. 22. [STL] algorithm 기존 문제점 예제를 하나씩 풀어봤는데, 가독성이 좋지 않다는 걸 알 수 있다. 코드는 굉장히 단순하지만, 그래도 분석하는데 최소 10초는 걸릴 수 있다고 생각할 수 있다. 또한 정형화된 패턴이 아니다보니 프로그래머 마다 스타일이 다를 수도 있다. 그래서 바로 보자마자 이해하기 어렵다. 더욱 큰 단점은 코드는 vector를 사용했기 때문에, 코드 내에선 특정 인덱스에 접근(v[i])하는 임의 접근 코드가 들어가있지만, 만약 삽입/삭제의 효율 때문에 list로 바꿔야 한다면 문법의 문제가 생길것이다. #include #include #include using namespace std; int main() { srand(static_cast(time(nullptr))); vector v; for (int i .. 2023. 5. 22. [STL] set, multimap, multiset set #include #include #include #include using namespace std; 주제 : set, multimap, multiset int main() { // (key = value) set s; // 넣고 s.insert(10); s.insert(20); s.insert(30); s.insert(40); // 뺴고 s.erase(40); // 찾고 set::iterator findit = s.find(50); if (findit == s.end()) cout 2023. 5. 20. [STL] map vector, list 문제점 #include using namespace std; class Player { public: Player() : _playerId(0) { } Player(int playerId) : _playerId(playerId) { } public: int _playerId; } int main() { vector v; // 10만명 입장 for (int i = 0; i < 100000; ++i) { Player* p = new Player(i); v.push_back(p); } // 5만명이 퇴장 for (int i = 0; i < 50000; ++i) { int randIndex = rand() % v.size(); Player* p = v[randIndex]; delete p.. 2023. 5. 19. [STL] deque #include #include // 주제 : deque // vector : 동적 배열 [ ] // list : 이중 연결 리스트 // [ ] [ ] [ ] [ ] // deque : doble-ended queue 데크 // [ ] // [ ] // [ ] int main() { // 시퀀스 컨테이너 (Sequence Container) // 데이터가 삽입 순서대로 나열되는 형태 deque dq; // vector와 사용형태가 굉장히 비슷하다. // capacity가 없다. dq.push_back(1); dq.push_front(2); dq[0]; // 임의접근도 가능. // vector와 마찬가지로 배열 기반으로 동작. // 다만 메모리 할당 정책이 다르다. // vector는 뒤로만. deque는.. 2023. 5. 19. [Programmers] Lv 2. 다음 큰 숫자 https://school.programmers.co.kr/learn/courses/30/lessons/12911?language=cpp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include using namespace std; int bit1_number(int n) { int cnt = 0; while (n) { int remain = (n % 2); n /= 2; cnt += (remain == 1) ? 1 : 0; } return cnt; } int solution(int n) { int result = bit1_numbe.. 2023. 5. 19. [STL] list #2 list 직접 만들어보기. #include using namespace std; #include #include // 오늘의 주제 : list template class Node { public: Node() : _next(nullptr), _prev(nullptr), _data(T()) { } Node(const T& value) : _next(nullptr), _prev(nullptr), _data(value) { } public: Node*_next; Node*_prev; T_data; }; template class Iterator { public: Iterator() : _node(nullptr) { } Iterator(Node* node) : _node(node) { } // ++it Iter.. 2023. 5. 19. [Programmers] Lv 2. 숫자의 표현 https://school.programmers.co.kr/learn/courses/30/lessons/12924?language=cpp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include using namespace std; int solution(int n) { int answer = 1; // 자기자신 + 1 // 두 개의 반복문을 이용해 연속된 숫자로 n이 되면 ++answer로 증가. for (int i = 1; i n) break; // 연속된 숫자의 합이 n보다 커질경우, 반복문 종료 } } return answer.. 2023. 5. 18. [Programmers] (월간 코드 챌린지 시즌1) Lv 2. 이진 변환 반복하기 https://school.programmers.co.kr/learn/courses/30/lessons/70129?language=cpp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include #include #include using namespace std; vector solution(string s) { int count{0}, erase{0}; while (s != "1") { while (find(s.begin(), s.end(), '0') != s.end()) { s.erase(find(s.begin().. 2023. 5. 16. [STL] list #1 list (연결 리스트) list의 동작 원리 중간 삽입/삭제 처음/끝, 삽입/삭제 임의 접근 (Random Access) list li; for (int i = 0; i < 100; ++i) li.push_back(i); li.push_front(0); // vector는 처음 삽입이 비효율적이라 없음 int size = li.size(); //li.capacity(); // 없음 int first = li.front(); int last = li.back(); // li[3] = 10 // 임의접근 허용안됨 list::iterator itBegin = li.begin(); list::iterator itEnd = li.end(); li.insert(itBegin, 100); li.erase(li.be.. 2023. 5. 15. 이전 1 ··· 20 21 22 23 24 25 26 ··· 54 다음