BOJ - 나이순 정렬 10814
·
코딩테스트
해결방법나이가 증가하는 순으로 정렬해야 하고, 나이가 같다면 먼저 가입한 순으로 정렬을 해야한다는 점을 구현해야 한다. 일단 stable_sort를 이용한다면 나이가 같을 때 먼저 가입한 순으로 정렬을 해야 한다는 점은 생각하지 않아도 좋다. 정렬하기 전의 상대적인 순서를 유지해주기 때문이다. 따라서 나이순으로 정렬을 하는 부분만 신경써주면 된다. 정답 코드#include #include #include #include using namespace std;int main(){ int N; cin >> N; vector> members; for (int i = 0; i > age >> name; members.push_back({ age, name }); } stable_sort(members.begin..
BOJ - 최대공약수와 최소공배수 2609
·
코딩테스트
해결방법최대공약수와 최소공배수를 구하는 공식을 알고 있다면 쉽게 구할수 있다. 두 수 a와 b를 가지고 문제를 푼다고 가정했을때최대공약수의 경우 a를 b로 나눈 나머지 값이 0과 같다면 b가 최대공약수가 되고, 아니라면 b와 b를 a와 b로 나눈 나머지를 가지고 반복을 해주는 형태로 구할 수 있다. 최소공배수의 경우 a와 b의 곱을 최대공약수로 나눠준 값이 된다. 정답 코드#include using namespace std;int GCD(int a, int b){ return (a % b == 0 ? b : GCD(b, a % b));}int LCM(int a, int b){ return a * b / GCD(a, b);}int main(){ int A, B; cin >> A >> B; cout
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..