작성일 :

문제 링크

12603번 - Store Credit (Small)

설명

주어진 가격 목록에서 합이 크레딧이 되는 두 물건의 위치를 찾는 문제입니다.


접근법

먼저 모든 가격을 배열에 저장합니다.

다음으로 두 물건을 고르는 모든 조합을 확인하며 합이 크레딧인 순간을 찾습니다.

마지막으로 찾은 두 위치를 작은 인덱스부터 출력합니다.



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;
}