728x90
https://adventofcode.com/2024
Advent of Code 2024
adventofcode.com
문제 1번
생각
단순하게 왼쪽 숫자와 오른쪽 숫자를 정렬 후 거리를 구하는 문제이다.
풀이
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int MAX = 1000;
vector<int> l;
vector<int> r;
void input(){
int left, right;
for(int i = 0; i < MAX; i++){
cin >> left >> right;
l.push_back(left);
r.push_back(right);
}
}
void sol(){
sort(l.begin(), l.end());
sort(r.begin(), r.end());
int answer = 0;
for(int i = 0; i < MAX; i++){
answer += abs(l[i] - r[i]);
}
cout << answer << endl;
}
int main(){
input();
sol();
return 0;
}
문제
생각
왼쪽 숫자를 기준으로 오른쪽에 같은 숫자가 몇 번 나와있는지 구하는 문제이다.
따라서 오른쪽 숫자는 input으로 받을 때 나온 횟수를 저장하였다.
풀이
#include <iostream>
#include <vector>
using namespace std;
const int INPUT_SIZE = 1000;
const int MAX = 100000;
vector<int> l;
int similarity_score[MAX];
void init(){
for(int i = 0; i < MAX; i++){
similarity_score[i] = 0;
}
}
void input(){
int left, right;
for(int i = 0; i < INPUT_SIZE; i++){
cin >> left >> right;
l.push_back(left);
similarity_score[right]++;
}
}
void sol(){
int answer = 0;
for(int i = 0; i < l.size(); i++){
answer += l[i] * similarity_score[l[i]];
}
cout << answer << endl;
}
int main(){
init();
input();
sol();
return 0;
}
728x90
'알고리즘 문제 > 2024 AOC' 카테고리의 다른 글
[2024 AOC] 2일차 CPP (0) | 2024.12.03 |
---|