본문 바로가기

Algorithm197

[백준 10814] 나이순 정렬 10814번: 나이순 정렬 (acmicpc.net) 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 배운 것 구조체로도 풀 수 있고 stable sort로도 풀 수 있고 stable_sort 원래의 순서를 손상시키지 않으면서 정렬하는것 tuple 원소값 하나씩 가져오기 내코드 - stable sort 버전 #include using namespace std; bool cmp(pair a, pair b) { return a.first> N; vector v; for(int i=0;i>age>>name; v.push_b.. 2022. 10. 4.
[백준 1181] 단어 정렬 1181번: 단어 정렬 (acmicpc.net) 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 배운것 벡터 중복제거 sort(v.begin(), v.end(), cmp); a.erase(unique(v.begin(), v.end()), v.end()); 정답 코드 using namespace std; bool cmp(string a, string b) { int alen = a.size(); int blen = b.size(); if (alen != blen)return alen < blen; r.. 2022. 9. 28.
[백준 15663] N과 M(9) 15663번: N과 M (9) (acmicpc.net) 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 배운것 이전 것과 비교해야되는데 마땅히 방법이 떠오르지 않는다면? 임시 변수를 만들 생각을 해보자~ 정답 코드 #include using namespace std; int n, m; int arr[10]; int num[10]; bool isused[10]; void func(int k) { // 현재 k개까지 수를 택했음. if (k == m) { for (int i = 0; i < m; ++i) { co.. 2022. 9. 28.
[백준 15657] N과 M (8) 15657번: N과 M (8) (acmicpc.net) 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 정답 풀이 #include using namespace std; int n, m; int a[10]; int t[10]; bool isused[10]; void func(int k, int st) { // 현재 k개까지 수를 택했음. if (k == m) { for (int i = 0; i m; for (int i = 0; i > a[i.. 2022. 9. 28.
[백준 9095] 1,2,3 더하기 9095번: 1, 2, 3 더하기 (acmicpc.net) 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 배운것 규칙 찾아 점화식으로 만들고 초깃값 잘 설정해주기 정답 코드 #include using namespace std; // d[i] = i를 1, 2, 3의 합으로 나타내는 방법의 수 int d[20]; int main(void){ ios::sync_with_stdio(0); cin.tie(0); d[1] = 1; d[2] = 2; d[3] = 4; for(int i = 4; i > t; while(.. 2022. 9. 28.
[백준 1463] 1로 만들기 1463번: 1로 만들기 (acmicpc.net) 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 배운 것 출처 : BaaaaaaaarkingDog | [실전 알고리즘] 0x10강 - 다이나믹 프로그래밍 (encrypted.gg) 정답 코드 #include using namespace std; int d[1000005]; int n; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cin >> n; d[1] = 0; for(int i = 2; i 2022. 9. 28.