본문 바로가기

백준/C++

(130)
[C++] 백준 4101번 - 크냐? 문제 4101번https://www.acmicpc.net/problem/4101  오늘 친척집에 가서 아침에 얼른 했다... 쉬운 문제라고 생각했는데 중간에 실수를 했다. while 조건에 a와 b가 0이 아닐 때까지 반복하라고 해서 0과 0이 입력되었을 때 No를 출력하고 종료되는 것이었다. 그래서 while을 무한 반복해주고 안에 있는 조건문에 a, b가 0이면 break를 통해 반복문을 빠져나오도록해주었다. #include using namespace std;int main() { int a = -1, b = -1; while (true) { cin >> a >> b; if (a == 0 && b == 0) { break; } else if (a > b) { cout
[C++] 백준 1037번 - 약수 문제 1037번https://www.acmicpc.net/problem/1037 양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야한다고 나와있다. 그러면 1과 N이 빠진 진짜 약수들이 나와있을 때 맨 앞과 맨 뒤를 곱하면 해당하는 숫자를 구할 수 있다.  변수에 입력 개수만큼 입력받은 후 오름차순으로 정렬해 앞과 뒤의 곱을 출력해주면 된다. #include #include using namespace std;int main(){ int N; cin >> N; int* num = new int[N]; for(int i = 0; i > num[i]; } sort(num, num + N); cout
[C++] 백준 1436번 - 영화감독 숌 보호되어 있는 글입니다.
[C++] 백준 1253번 - 좋다 문제 1253번https://www.acmicpc.net/problem/1253  이번 문제는 투포인터를 사용하는 문제이다. N개의 수 중 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있는지 알아내고, 그 개수를 출력하면 된다. 배열에 수를 넣고 해당 수의 개수만큼 정렬을 해준다(투포인터를 이용하려면 정렬은 필수!). 투 포인터 left에는 0, right에는 N-1로 초기화한다. 같은 수의 합으로 나타내면 안 되기 때문에 left가 right보다 작을 때까지 계속해서 반복해주고, left,right를 인덱스로 넣은 값의 합과 찾을 숫자를 비교해준다.  같다면 서로 다른 숫자의 합이 찾는 값이어야하기 때문에 찾을 숫자의 인덱스 i와 left, right를 비교해준다. 둘 다 같지 않다면 좋은 수의 개수..
[C++] 백준 19532번 - 수학은 비대면강의입니다 문제 19532번https://www.acmicpc.net/problem/19532  이번 문제는 자바스크립트로도 풀었던 문제이다. 일단 변수에 각 숫자를 입력받아 방정식에 값을 넣어 성립하는지 확인하고, 성립한다면 해당 i, j 값을 출력한 후 반복문을 빠져나온다. #include using namespace std;int main(){ int a,b,c,d,e,f; cin >> a >> b >> c >> d >> e >> f; for(int i=-999;i
[C++] 백준 2231번 - 분해합 문제 2231번https://www.acmicpc.net/problem/2231 1부터 시작하여 더한 값이 N과 같은지 비교하여 같으면 해당 result값을 출력하고, 아니면 0을 출력한다. #include using namespace std;int main() { int N, result = 0; cin >> N; for (int i = 1; i
[C++] 백준 5635번 - 생일 문제 5635번https://www.acmicpc.net/problem/5635 찾아보니까 pair안에 pair을 넣을 수 있는 것을 알았다. 순서가 이름, 일, 월, 연도 이런 식으로 되어있으니 벡터에 반대로 저장해서 정렬을 해주면 나이가 많은 사람부터 순서대로 벡터에 저장된다. 나이가 가장 적은 사람과 가장 많은 사람을 출력해야하므로 맨뒤에 있는 사람과 맨 앞에 있는 사람을 출력해주면 된다. #include #include #include #include using namespace std;int main() { int N; cin >> N; vector, pair>> v(N); for (int i = 0; i > v[i].second.second >> v[i].second.fi..
[C++] 백준 11652번 - 카드 문제 11652번https://www.acmicpc.net/problem/11652  입력받은 값들을 정렬한 후 앞뒤를 비교하여 같으면 count해준다. 그렇게 count값이 max보다 크다면 max를 count값으로 업데이트해주고 출력해야하는 값을 count가 많은 입력값으로 업데이트해준다. 그렇게 반복문을 마치고 result값을 출력해주면 원하는 값을 구할 수 있다.  #include #include #include using namespace std;int N;vector v;long long a;int main() { cin >> N; for (int i = 0; i > a; v.push_back(a); } sort(v.begin(), v.end()); int count = 0, max = 0;..