[BOJ] 백준 10816번: 숫자 카드 2 (C++)
·
프로그래밍/Algorithm
- 문제 출처 : https://www.acmicpc.net/problem/108161. 생각이번에도 map을 활용한 문제이다. 문제가 요구하는 사항 중에 이분탐색을 이용하는 것도 있었으나,이분탐색 알고리즘을 아직 해보지 않아서 map만 활용해서 해보도록 하겠다. 2. 난관 & 해결방법std::map m; 숫자카드의 숫자와 개수를 각각 key, value로 두기 위해 int, int로 map을 만들었다. for (int i = 0; i > num; auto it = m.insert({num, 1}); if (!(it.second)) it.first -> second ++;} 반복문에서는 insert로 값을 넣어주는데, 이 insert의 반환값이 pair 이라는 것을 알게 되어 ..
[BOJ] 백준 1620번: 나는야 포켓몬 마스터 이다솜 (C++)
·
프로그래밍/Algorithm
- 문제 출처 : https://www.acmicpc.net/problem/16201. 생각신기한 제목과 내용의 문제이다. 하지만 새로운 자료구조인 map을 사용하는 문제이다. map은 각 노드가 key, value 의 쌍으로 이루어진 트리의 자료구조이다.set 처럼 중복을 허용하지 않으며, pair 객체로 저장되기에 first -> key, second -> value 로 대응된다.(set과 비슷하지만 key값 기준 중복이 허용되지 않는 쌍으로 만들어지는 자료일 때, 사용하면 된다.)따라서 선언 시에는 map name 으로 하며,set 과 동일하게 iterator를 통해 접근할 수 있다.iterator를 통해 접근 시, iterator -> first, iterator -> second 로 각각 ke..
[BOJ] 백준 7785번: 회사에 있는 사람 (C++)
·
프로그래밍/Algorithm
- 문제 출처 : https://www.acmicpc.net/problem/77851. 생각직원이 출근을 했는데, 만약 또 같은 이름의 직원이 들어와도 해당 직원은 추가되면 안된다.따라서 이 문제는 중복을 허용하지 않고, 정렬도 시켜주는 set 이 가장 적합한 문제라고 볼 수 있다. 그리하여, enter일 때는 insert()로 직원을 추가하고, leave일 때는 erase()를 활용해 명단에서 지운다.이를 활용해서 문제를 풀어보도록 하자. 2. 난관 & 해결방법int N;std::string human, status;std::set > st; string으로 human과 status 를 받아준다. 이는 입력값으로 사용한다.그리고, set 을 선언해주는데, 이번에는 내림차순으로 정렬해서 가지고 있어야하므..
[BOJ] 백준 10815번: 숫자 카드 (C++)
·
프로그래밍/Algorithm
- 문제 출처 : https://www.acmicpc.net/problem/108151. 생각이번에는 새로운 자료구조인 집합(set)을 배울 수 있는 문제를 가지고 왔다.이 set이라는 자료구조는 삽입 순서에 상관없이 정렬되어 입력되며, 중복이 없게 입력된다. 기본적으로 set에 어떤 값을 삽입하기 위해서는 insert()를 사용하며,자료에 접근하기 위해서는 반복자(iterator)라는 객체가 필요하다. 이 iterator는 ' 어떤 자료구조에 접근하든 동일한 방법으로 접근하기 위해 제공되는 객체'로써,포인터와 비슷하게 내부 요소에 접근하는데,어떤 자료구조든 해당 내부 구조를 몰라도 쉽게 순회할 수 있게 해주며,서로 다른 자료구조에 통일된 인터페이스로 접근을 할 수 있도록 해주는 것이 iterator 이..
[BOJ] 백준 12789번: 도키도키 간식드리미 (C++)
·
프로그래밍/Algorithm
- 문제 출처 : https://www.acmicpc.net/problem/127891. 생각stack 응용 문제를 하나 들고 와봤다.T자 모양의 대기열에서 순번대로 간식을 받을 수 있는지 없는지 판별하는 문제이다. 처음의 생각은 대기열에 있는 학생들 중 현재 차례(시작값 : 1)에 해당하는 학생은 간식 받는 곳으로 내보내고,나머지는 모두 스택에 쌓은 뒤 스택에 있는 학생들은 추후에 하나씩 빼가면서 현재 차례에 해당 하지 않는 학생이 있으면Sad로 판별하려고 했다. 2. 난관 & 해결 방법for (int i = 0; i > num; if (turn == num) turn ++; else st.push(num);}while (!st.empty() && st.top() =..
[BOJ] 백준 24511번: queuestack (C++)
·
프로그래밍/Algorithm
- 문제 출처 : https://www.acmicpc.net/problem/245111. 생각이번 문제는 queuestack 이라는 이름의 문제이다. 어떤 값을 입력받으면 이 값이 queue 또는 stack으로 이뤄진 자료구조들에 push되었다가,각각의 자료구조의 pop 방식에 따라 다시 다음 자료구조로 넘어가서, 마지막에 pop된 값이 출력되는 문제였다. queue와 stack을 모두 활용할 수 있는 구조인 deque를 사용해야겠다고 바로 생각이 들었고,굉장히 단순하게 여러 deque를 만들어서 0, 1 에 따라 queue 처럼 쓸지 stack 처럼 쓸지 결정하면 되는구나 했지만,이는 큰 착각이었다.. 2. 난관 & 해결 방법1) deque를 여러개 만들고 주어진 수가 모든 deque을 거치며 retu..