본문 바로가기

백준 문제 풀이 & C++ 공부54

백준 10814번 C++ 이 문제를 완벽하게 이해하고 풀기 위해서 vector cotainer, pair, sort, stable_sort를 공부하였습니다. pair를 제외하고는 다 제 블로그 안에 글들이 있으니 혹시 잘 모르신다면 한번 보시고 문제를 푸시는 걸 추천드립니다. https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 이 문제에서 중요한 사항중에 하나는 sort와 stable_sort의 차이점을 아는 것이 중요했던 것 같습니다. 불안정정렬을 사용할 경우 나이가 같다면 .. 2021. 7. 7.
C++ sort & stable_sort sort는 불안정정렬이고 stable_sort는 안정정렬입니다. 이 두가지의 차이점을 먼저 말씀드리겠습니다. 배열이 다음과 같이 나와있을 수 있습니다. 이게 정렬 전 배열입니다. 같은 숫자는 자신의 앞과 뒤의 순서를 알아볼 수 있도록 색깔을 빨강(선) - 주황(후)로 하겠습니다. 일반적인 stable_sort(안정정렬)은 다음과 같이 정렬이 완성됩니다. 순서가 바뀌지 않고 정렬이 완성이 됩니다. 하지만 정렬이 되지 않은 배열을 sort로 정렬하면 다음과 같이 됩니다. 위의 결과와 같이 먼저 왔다고 해서 배열의 앞순서로 온다는 보장이 없습니다. 그렇기에 불안정정렬이라고 합니다. 물론 78의 순서도 서로 달라질 수 있고 25의 앞, 뒤 순서가 올바르게 될 수도 있습니다. 이러한 요소를 잘 고려해서 코딩을 만.. 2021. 7. 7.
C++ Vector Container 백준 문제를 풀다가 어떻게 풀어야할지 생각을 하다가 떠오르는 방법이 모두 마음에 들지 않아서 다른 사람들의 풀이를 보다가 vector를 사용하는 것을 보고 이것이 무엇인지 흥미를 가지게 되었습니다. vector Container? vector 컨테이너는 자동으로 메모리가 할당되는 배열입니다. vector를 생성하면 메모리 heap에 생성되며 동적할당됩니다. 속도적인 측면에서는 배열에 비해 성능이 떨어지지만 메모리를 효율적이로 관리하고 예외처리가 쉽다는 장점이 있기 때문에 사용을 합니다. vector는 배열과 마찬가지로 원소들이 하나의 메모리 블록에 연속되게 저장됩니다. 원소가 추가되거나 삽입될 때 메모리 재할당이 발생할 수 있고 상당한 부하가 발생하는것이 단점입니다. C++의 vector는 C++ 표준라.. 2021. 7. 5.
백준 9012 C++ & cin.ignore() https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 이 문제를 풀면서 배운 점은 일단 cin.ignore()에 관해서 배웠습니다. 코드의 제일 밑에 보면 expression string subscript out of range c++이 있는데 이게 제가 처음 코딩을 하고 나서 생긴 오류입니다. 이러한 에러를 처음 만나봐서 해결 방법을 위해 검색을 하였습니다. 그러다가 cin.ignore에 관해서 발견을 하였고 이것을 .. 2021. 7. 4.