BOJ - 좌표 정렬하기 2 11651
·
코딩테스트
해결방법처음에 map을 사용해서 문제를 풀어보려고 했는데 잘 되지 않아서 vector와 pair를 섞어서 사용하는 방식으로 선회했다. 문제를 보면 y좌표를 가지고 정렬을 하라는 것을 알 수 있다.따라서 정렬 기준은1. y좌표값을 비교를 하고,2. 만약 y좌표값이 같다면 x좌표값을 비교한다.가 된다. 정답 코드#include #include #include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); int N, x, y; cin >> N; vector> dots; for (int i = 0; i > x >> y; dots.push_back({ x, y }); } s..
BOJ - 욱제는 결정장애야!! 14646
·
코딩테스트
해결방법우선, 2N번 돌리면 N일동안의 메뉴를 모두 정할수 있다고 하는 것으로 반복을 최소 2 * N번 해야 한다는 것을 알 수 있다. 문제의 핵심은 Menu[input - 1] 이 부분이다. 스티커를 붙이면 저 부분에 +1을 해주고, 아니라면 -1을 해주면 된다. 정답 코드#include using namespace std;int main(){ int N, input, num = 0, max = 0; int Menu[100000] = { 0 }; cin >> N; for (int i = 0; i > input; if (Menu[input - 1] == 0) num++; else if (Menu[input - 1] == 1) num--; Menu[input - 1]++; if (max
BOJ - 수 찾기 1920
·
코딩테스트
해결방법set을 이용하여 입력받은 값들 안에서 수가 존재하는지 찾아내는 구조이다. set은 중복이 없고 자동으로 정렬된다. 문제를 풀때 시간 제한때문에 unordered set을 사용했지만 그냥 set을 사용해도 풀리긴 할 것이다. 정답 코드#include #include using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); int N, M; cin >> N; unordered_set Pool; for (int i = 0; i > num; Pool.insert(num); } cin >> M; for (int i = 0; i > num; if (Pool.find(num) != Pool.end()) { cout
BOJ - 스택 10828
·
코딩테스트
해결방법이번에도 대놓고 스택을 사용하라는 문제이다. 구조만 간단히 보고 넘어가겠다.스택은 FILO구조로, 먼저 들어간 값이 맨 아래에 있고 마지막으로 들어간 값이 최상단에 있어 pop을 하게 되면 마지막으로 들어간 값부터 튀어나오는 자료구조이다. 스택 역시 STL로 이미 구현되어 있어 이를 활용했다. 정답 코드#include #include #include #include using namespace std;struct Stack{ int top; int max; int* array;};Stack* createStack(int max){ Stack* stack = new Stack(); stack->max = max; stack->top = -1; stack->array = new int[stack->m..
BOJ - 괄호 9012
·
코딩테스트
해결방법스택을 사용한 문제이다.구조는 다음과 같다.(을 만나면 스택을 추가. )을 만나면 스택의 top을 제거.만약 스택이 없는데 )을 만나는 경우 flag를 설정하고 루프를 끝내버린다. 만약 스택이 비어있지 않거나 flag가 올라가 있다면 잘못된 경우이므로 NO가 출력되고 그렇지 않다면 YES가 출력되는 구조이다. 정답 코드#include #include using namespace std;int main(){ int TestCase, count = 0, flag = 0; string PS; cin >> TestCase; for (int i = 0; i stack; cin >> PS; for (int j = 0; j
BOJ - 큐 10845
·
코딩테스트
해결방법대놓고 큐를 사용하라고 하는 문제이다.일단 큐의 개념을 살펴보자면 FIFO 구조로 되어 있어 먼저 들어온 애가 가장 먼저 뽑히고, 나중에 들어온다면 맨 뒤로 가는 구조이다. STL에 큐가 있으니 그것을 활용해보았다. 정답 코드#include #include using namespace std;int main(){ queue Queue; string CMD; int N, num; cin >> N; for (int i = 0; i > CMD; if (CMD == "push") { cin >> num; Queue.push(num); } if (CMD == "pop") { if (Queue.size() == 0) { cout