본문 바로가기

공부11

[백준] 2467번: 용액 (C++) 2467번: 용액 문제 ) KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다. 같은 양의 두 용액을 혼합한 용액의 특성값은 혼합에 사용된 각 용액의 특성값의 합으로 정의한다. 이 연구소에서는 같은 양의 두 용액을 혼합하여 특성값이 0에 가장 가까운 용액을 만들려고 한다. 예를 들어, 주어진 용액들의 특성값이 [-99, -2, -1, 4, 98]인 경우에는 특성값이 -99인 용액과 특성값이 98인 용액을 혼합하면 특성값이 -1인 용액을 만.. 2022. 6. 28.
[백준] 3273번: 두 수의 합 (C++) 3273번: 두 수의 합 문제 ) n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i > n; cin.ignore(); // 문자열 입력받기 vector v; string num; string line; getline(cin, line); stringstream sstream(line); while(getline(sstream, num, ' ')) { v.push_back(stoi(num)); } sort(v.begin(), v.end()); int check; cin >> check; cin.ignore(); // 투포인터 사용 int.. 2022. 6. 28.
[백준] 2003번: 수들의 합 (C++) 2003번: 수들의 합 문제 ) N개의 수로 된 수열 A[1], A[2], …, A[N] 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i] + A[i+1] + … + A[j-1] + A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력 : 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. 출력 : 첫째 줄에 경우의 수를 출력한다. 풀이) 최대 GCD문제에서 했던 것처럼 입력되는 문자열을 ' ' 기준으로 나누어 int로 변환 시킨 뒤 vector로 넣어준 후 투포인터를 진행해 문제를 풀어주었다. .. 2022. 6. 27.
[백준] 11653번: 소인수 분해 (C++) 11653번: 소인수 분해 문제 ) 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 입력 : 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. 출력 : N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 풀이) 소인수 분해를 하는 코드를 만들어 풀었다. 해당 코드에 대한 설명은 밑에 코드와 함께 주석으로 적어두었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include using namespace std; int main() { int n, x; cin >> n; // n은 변하면 안되므로 x를 따로 만들어 둔다.. 2022. 6. 27.