https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 이름, 국어, 영어, 수학 점수가 다 묶여야 하므로 구조체를 써야한다는 생각이 들었다. 그리고 sort 함수를 사용할 때 compare함수를 새로 구현해서 인자로 넣어주면 된다라는 생각이 들었다 #include #include #include #include using namespace std; struct student { string name; int korean, eng..
https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 사고과정) 두 개의 값의 합이 0에 가까워지려면 양 끝 값(제일 음수, 제일 양수)인 것들을 더한 다음 이것의 절댓값을 씌움으로써 0과의 거리가 얼마나 가까운지를 파악했다. 두 값의 합이 음수면 음수쪽 값이 더 영향력이 있는 것이므로 음수의 칸을 한칸 옮겨주고 두 값의 합이 양수라면 양수쪽 값이 더 영향력 있는 것이므로 양수의 칸 한 칸 왼쪽으로 줄여주었다. 이를..
https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin >> n; vector v; vector copy; int temp; for (int i = 0; i < n; i..
https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net #include #include #include using namespace std; int main() { std::cin.tie(NULL); std::ios::sync_with_stdio(false); int n, m; cin >> n >> m; int count = 0; map ma; for (int i = 0; i < n; i++) { string temp;..
https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 중복이 없다 했으므로 set을 활용해봤다. #include #include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, m; int count = 0; cin >> n >> m; set s; for (int i =..
https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 풀이는 두 가지로 풀었다. 1) set을 활용. 중복인지 찾으려고 활용하였다. #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n, m; set s; cin >> n; for (int i = 0; i < n; ..
https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 사고과정) 우선 해당 수보다 작은 소수들을 찾으려했다. 짝수들은 소수가 아니기 때문에 반복문 조건에서 +2로 해주었다. 2와 3은 예외처리를 해주었다. 그 이후 이중반복문으로 소수 배열의 원소 두개를 더하고 input값이랑 같으면 그 차이를 가장 작게 한걸 pair로 저장하게 했다. #include #include #include #include using namespace s..
https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 최빈값 조건이 까다로웠다.. 여러 개 있을 때 두 번째로 작은 값을 출력해라... #include #include #include #include using namespace std; int first(vector& v) { double sum = 0; int size = v.size(); for (int i = 0; i < size; i++) { sum += v[i]; } return round(sum / s..