2798
https://www.acmicpc.net/problem/2798

for문 3회로 풀었음. 입력 크기가 그렇게 크지 않아 시간 복잡도 측면에서 무리없이 작동함
INF의 경우, 맨 위에 #define INF 1000000이라고 정의해서 큰 값을 표현
더보기
void p2798()
{
// 3 <=n <= 100, 10<=m<=300,000
// n장의 카드, M을 넘지 않으면서 최대한 가까운 수.
// 각 카드는 100,000을 넘지 않음.
int n, m;
int diff = INF;
int res;
cin >> n >> m;
vector<int> nums;
nums.resize(n);
for (int i = 0; i < n; i++)
{
int k = 0;
cin >> k;
nums[i] = k;
}
for (int i = 0; i < n - 2; i++)
{
for (int j = i + 1; j < n - 1; j++)
{
for (int k = j + 1; k < n; k++)
{
int val = nums[i] + nums[j] + nums[k];
if (m >= val && ((m - val) < diff))
{
diff = m - val;
res = val;
}
}
}
}
cout << res;
}
2231
https://www.acmicpc.net/problem/2231
문자열을 int로 변형 후 풀이, char to int를 -'0'을 통해 변경 (아스키코드)
res는 0으로 초기화해서 없는 경우, 바로 0으로 출력되도록.
이중 for문이어서 시간 복잡도 측면의 에러를 걱정했으나 통과

더보기
void p2231()
{
// 분해합
// 256 = 245 +2 + 4 + 5
// 따라서 245는 256의 생성자가 됨.
// 생성자는 여러 개가 될 수 있음. -> 가장 작은 생성자
// 자연수 N을 입력받음 (1<=N<=1,000,000)
// 만약 생성자가 없다면 0을 출력
string s;
cin >> s;
int res = 0;
int num = stoi(s); // int 변환
for (int i = 1; i < num; i++)
{
int val = i;
string tmps = to_string(i);
int temp = tmps.size(); // 몇 자리 수인지 체크
for (int j = 0; j < temp; j++)
{
val += (tmps[j] - '0');
}
if (num == val)
{
res = i;
break;
}
}
cout << res;
}
19532
https://www.acmicpc.net/problem/19532

해가 유일하다고 했으므로, 일반적으로 연립방정식 풀듯이 풀이
계수가 0인 경우 처리를 안해줬더니 47%? 쯤에서 에러가 나와서 다시 수정
더보기
void p19532()
{
// ax + by = c
// dx + ey = f
// adx + bdy = cd
// adx + aey = af
// 1) 모두 0인 경우
// 2) a가 0인 경우
// d가 0인 경우
// 3) b가 0인 경우
// e가 0인 경우
// 4) 모든 게 0이 아닌 경우
// result;
int x = 0, y = 0;
int a, b, c, d, e, f;
cin >> a >> b >> c >> d >> e >> f;
// 1)
if ((a == 0 && b == 0) || (d == 0 && e == 0))
{
cout << x << " " << y; // 둘 다 0으로 출력
// return 0;
}
// 2)
else if (a == 0)
{
y = c / b;
x = (f - e * y) / d;
}
else if (d == 0)
{
y = f / e;
x = (c - b * y) / a;
}
// 3)
else if (b == 0)
{
x = c / a;
y = (f - d * x) / e;
}
else if (e == 0)
{
x = f / d;
y = (c - a * x) / b;
}
// 4) 모든 계수가 0이 아닌 경우
else
{
y = (c * d - a * f) / (b * d - a * e);
x = (c - b * y) / a;
}
cout << x << " " << y;
}
'코딩 테스트 > C++' 카테고리의 다른 글
| 백준, C++) 2587, 25305, 2751, 10989, 1427, 11650, 11651, 1181 (0) | 2025.10.10 |
|---|---|
| 백준, C++) 1018, 1436, 2839 (0) | 2025.10.05 |
| 입출력 시간 초과 해결 (0) | 2025.09.16 |
| 백준, C++) 1978, 2581, 5086 (0) | 2025.04.22 |
| 백준, C++) 2765, 11005, 2720, 2903,2292, 1193, 2869 (0) | 2025.04.21 |