[백준 12603] Store Credit (Small) (C#, C++) - soo:bak
작성일 :
문제 링크
설명
주어진 가격 목록에서 합이 크레딧이 되는 두 물건의 위치를 찾는 문제입니다.
접근법
먼저 모든 가격을 배열에 저장합니다.
다음으로 두 물건을 고르는 모든 조합을 확인하며 합이 크레딧인 순간을 찾습니다.
마지막으로 찾은 두 위치를 작은 인덱스부터 출력합니다.
Code
C#
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
31
32
33
34
35
36
37
38
using System;
using System.Text;
class Program {
static void Main() {
var parts = Console.In.ReadToEnd().Split();
var idx = 0;
var t = int.Parse(parts[idx++]);
var sb = new StringBuilder();
for (var caseNum = 1; caseNum <= t; caseNum++) {
var c = int.Parse(parts[idx++]);
var n = int.Parse(parts[idx++]);
var arr = new int[n];
for (var i = 0; i < n; i++)
arr[i] = int.Parse(parts[idx++]);
var a = 0;
var b = 0;
var found = false;
for (var i = 0; i < n; i++) {
for (var j = i + 1; j < n; j++) {
if (arr[i] + arr[j] == c) {
a = i + 1;
b = j + 1;
found = true;
break;
}
}
if (found) break;
}
sb.AppendLine($"Case #{caseNum}: {a} {b}");
}
Console.Write(sb);
}
}
C++
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
31
32
33
34
35
36
37
#include <bits/stdc++.h>
using namespace std;
typedef vector<int> vi;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t; cin >> t;
for (int caseNum = 1; caseNum <= t; caseNum++) {
int c, n; cin >> c >> n;
vi arr(n);
for (int i = 0; i < n; i++)
cin >> arr[i];
int a = 0;
int b = 0;
bool found = false;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (arr[i] + arr[j] == c) {
a = i + 1;
b = j + 1;
found = true;
break;
}
}
if (found) break;
}
cout << "Case #" << caseNum << ": " << a << " " << b << "\n";
}
return 0;
}