π SAMSUNG λͺ¨μκ³ μ¬ : λ¨λ°±μ§ μ¬λ₯κΎΌ (C++)
λ¬Έμ
μμ μ λͺΈμ΄ νμ½νλ€κ³ μκ°ν μ νμ κ°ν΄μ§κΈ°μν΄ μ΄λμ νκΈ° μμνλ€. μκ³ λ¦¬μ¦ νΌνΈλμ€ μΌν°μ μΌν°μ₯μΈ μ’ λ―Όμ μ‘°μΈμ λ°λΌ βλ¨Ήλ κ² κΉμ§ μ΄λμ΄λ€.β λΌλ μ² μΉμ μ λ°λ₯΄κ³ μλ€. μ λ 무리νκ² μ΄λν μ¬νλ‘ λ¦μ μ μκ²λμ΄, μ€λ λ¨Ήμ λ¨λ°±μ§ λμλ½μ μ±κΈΈ μ¬μ κ° μμλ€. μ΄μ 무리νκ² μ΄λν κ²μ΄ μκΉμ΄ μ νμ μ¬λ¬΄μ€ κ·Όμ²μ μλ νΈμμ μ λλ©° μ»μ μ μλ μ΅λμ λ¨λ°±μ§μ ν보νλ €κ³ νλ€. κ°μ λ¨λ°±μ§ ν¨μμ κ°μ§ μ νμ λμΌν μ νμ΄κ³ , κ°μ λμλ½μ μ¬λ¬ λ² λ¨ΉμΌλ©΄ μ§λ¦¬κΈ°λλ¬Έμ μλ‘ λ€λ₯Έ μ νμ ν΅ν΄ λ¨λ°±μ§μ μμ·¨νκ³ μ νλ€. νμ΄ μμΉνκ³ μνλ μ νμ νΈμμ μ β+β λͺ¨μμΌλ‘ μννλ €κ³ νλ€.
μμ κ°μ΄ νΈμμ μ λ³΄κ° μ‘΄μ¬νλ€κ³ νμ λ, κ° μΉΈμ ν΄λΉνλ μ«μλ ν΄λΉ νΈμμ μμ μ»μ μ μλ λ¨λ°±μ§μ g μ μ΄λ€. 첫 λ²μ§Έ κ·Έλ¦Όμμ μ»μ μ μλ μλ‘ λ€λ₯Έ μ’ λ₯μ λ¨λ°±μ§ λμλ½ κ°μλ 4κ°μ΄λ©°, μ»μ μ μλ λ¨λ°±μ§ g μλ 7+2+10+9 λ‘ 28 μ΄λ€. λ λ²μ§Έ κ·Έλ¦Όμμ μ»μ μ μλ μλ‘ λ€λ₯Έ μ’ λ₯μ λ¨λ°±μ§ λμλ½ κ°μλ 5κ°μ΄λ©°, μ»μ μ μλ λ¨λ°±μ§ g μλ 1+3+4+9+10 λ‘ 27 μ΄λ€.
μν κ²½λ‘μ κ²½μ° λ§μ½ μ€μμ κΈ°μ μΌλ‘ λ΄€μ λ, μνμ’μ° κ²½λ‘μ κΈΈμ΄λ₯Ό μλ‘ λ¬λ¦¬ν μ μλ€. μ΄λ κ²½λ‘μ κΈΈμ΄ μ΅μκ°μ μνμ’μ° κ°κ° λͺ¨λ 1λ‘ κ³ μ νλ€. μ¦, νλμ νΈμμ λ§ λ€λ₯Ό μ μκ³ , μ§μ νν, 'γ±', 'γ΄' λ±μ λͺ¨μμΌλ‘ μνλ₯Ό ν μ μλ€λ κ²μ΄λ€. μλ₯Ό λ€λ©΄, λ€μκ³Ό κ°μ΄ λ€μνκ² μ‘΄μ¬ν μ μλ€.
μμ μ§μ μμ μΆλ°νμ¬ λ€μ μμ μ§μ μΌλ‘ λμμ¨λ€κ³ νμ λ, N * N μ νΈμμ λ¨λ°±μ§ λμλ½ μ 보μμ κ°μ₯ λ§μ΄ μ»μ μ μλ λ¨λ°±μ§ ν¨λμ ν©μ ꡬν΄λ³΄μ.
νΈμμ μ λ³΄κ° μ£Όμ΄μ‘μ λ, λ΅μ ꡬνλ κ³Όμ μ λ€μκ³Ό κ°λ€. (μ΄ 6κ°μ§κ° μ‘΄μ¬νλ κ²μ μλλ©°, λͺ κ°μ§ κ²½μ°λ μλ΅λμλ€.)
λ§μ§λ§ κ·Έλ¦Όμμ μ»μ΄μ§λ μ«μμ ν© 1+2+3+5+6+7+8 μΈ 32 κ° μ λ΅μ΄λ€.
μ λ ₯
첫 λ²μ§Έ μ€μ ν μ€νΈ μΌμ΄μ€μ κ°μ T(5 β€ T β€ 50) κ° μ£Όμ΄μ§λ€. κ° ν μ€νΈ μΌμ΄μ€μ 첫째 μ€μ N(3 β€ N β€ 20) μ΄ μ£Όμ΄μ§κ³ , N κ°μ μ€μ κ±Έμ³ N κ°μ μ«μκ° κ³΅λ°±μ ν΅ν΄ ꡬλΆνμ¬ μ λ ₯λλ€. κ°κ°μ μ λ ₯λλ μ«μλ 1 λΆν° 100 μ ν¬ν¨ν μ μμ΄λ€.
μΆλ ₯
κ° ν μ€νΈ μΌμ΄μ€μ ν΄λΉνλ κ²°κ³Όκ°μ ν μ€μ νλμ© β#t resultβ ν¬λ§·μΌλ‘ μΆλ ₯νλ€. (tλ 1λΆν° TκΉμ§μ μ μμ΄λ€)
5
4
7 8 6 10
9 2 7 1
6 5 1 3
1 7 5 9
10
7 7 5 8 3 1 5 6 4 4
1 8 4 4 4 6 3 7 9 3
8 8 6 7 3 8 5 4 3 7
3 4 1 6 4 3 5 3 2 7
9 9 1 8 3 9 6 4 2 2
4 5 5 7 4 7 1 8 9 6
1 7 7 8 5 2 6 1 5 2
3 9 6 1 8 2 3 4 5 4
2 1 1 2 9 6 1 4 6 6
9 2 4 6 7 1 4 3 8 6
8
4 7 1 6 8 5 8 7
4 5 6 1 9 1 1 8
7 2 1 4 1 7 1 1
3 8 6 2 5 2 5 1
9 8 8 4 8 7 8 9
1 2 2 4 3 3 9 4
3 9 3 2 2 8 5 9
4 3 4 2 3 4 6 6
6
5 3 9 3 7 5
9 4 9 1 5 4
3 3 7 8 1 6
6 8 7 3 3 3
1 3 9 8 5 6
1 1 3 7 6 3
4
7 7 3 6
1 3 2 1
9 6 1 8
2 2 2 2
#1 32
#2 45
#3 45
#4 39
#5 36
μ ν μ¬ν
- μ νμκ° : 3μ΄
νμ΄
λ¬Έμ μμ μ μλ 쑰건μ μ 리ν΄λ³΄λ©΄ μλμ κ°λ€.
-
κ°μ λ¨λ°±μ§ ν¨μμ κ°μ§ μ νμ λμΌν μ νμ΄κ³ , κ°μ λμλ½μ μ¬λ¬ λ² λ¨ΉμΌλ©΄ μ§λ¦¬κΈ°λλ¬Έμ μλ‘ λ€λ₯Έ μ νμ ν΅ν΄ λ¨λ°±μ§μ μμ·¨νκ³ μ νλ€.
- μ νλ νΈμμ (μΉΈ)μ λ¨λ°±μ§ ν¨μ(κ°) μ€ κ°μ κ²μ μ μΈνκ³ ν©μ°ν΄μΌ νλ€.
-
μ νμ νΈμμ μ β+β λͺ¨μμΌλ‘ μννλ €κ³ νλ€.
- λ°λΌμ 첫 μ€κ³Ό λ§μ§λ§ μ€μ μ μΈν ν μνν΄μΌ νλ€.
μ νμκ°μ΄ 3μ΄λ‘ μ¬μ λ‘μ΄ νΈμ΄κΈ° λλ¬Έμ μ 체 μνλ₯Ό μλν΄λ λ κ² κ°λ€.
κ°λ₯ν λͺ¨λ κ²½μ°μ μλ₯Ό μνν΄ κ°μ₯ ν° κ°μ μ°Ύμ ν΄κ²°νλ€.
- λ°λΌμ 첫 μ€κ³Ό λ§μ§λ§ μ€μ μ μΈν ν μνν΄μΌ νλ€.
μ νμκ°μ΄ 3μ΄λ‘ μ¬μ λ‘μ΄ νΈμ΄κΈ° λλ¬Έμ μ 체 μνλ₯Ό μλν΄λ λ κ² κ°λ€.
-
μ νμ μ¬λ¬΄μ€ κ·Όμ²μ μλ νΈμμ μ λλ©° μ»μ μ μλ μ΅λμ λ¨λ°±μ§μ ν보νλ €κ³ νλ€.
- μ΅λμ λ¨λ°±μ§μ ν보ν΄μΌ νλ―λ‘ κ°μ₯ ν° κ°μ μ°ΎμμΌ νλ€.
#include <iostream>
using namespace std;
//μ€λ³΅μ μ μΈν λͺ¨λ κ°μ ν©μ ꡬνλ ν¨μ
int uniqueSum(int arr[], int length){
int temp[length]; //μ€λ³΅μ μ μΈν κ°λ€μ μ μ₯ν λ°°μ΄
int count = 0; //μ€λ³΅μ μ μΈν κ°μ κ°μ(μΈλ±μ€μ©)
int sum = 0; //μ€λ³΅μ μ μΈν κ°λ€μ ν©
bool isNew; //μ€λ³΅ μ¬λΆλ₯Ό νλ¨νλ λ³μ
for(int i = 0; i < length; ++i){ //λ°°μ΄μ λͺ¨λ κ°μ μν
isNew = true;
//μ€λ³΅μ μ μΈν κ°λ€μ λ°°μ΄μ μννλ©° μ€λ³΅ μ¬λΆλ₯Ό νλ¨
for(int j = 0; j < count; ++j){
if(temp[j] == arr[i]){
isNew = false;
break;
}
}
if(isNew){ //μ€λ³΅μ΄ μλλΌλ©΄
temp[count++] = arr[i]; //μ€λ³΅μ μ μΈν κ°λ€μ λ°°μ΄μ μΆκ°
sum += arr[i]; //μ€λ³΅μ μ μΈν κ°λ€μ ν©μ μΆκ°
}
}
return sum;
}
int test(){
//ν
μ€νΈ μΌμ΄μ€μ κ°λ‘ μΈλ‘ κΈΈμ΄(N) μ
λ ₯ λ°κΈ°
int n;
cin >> n;
//ν
μ€νΈ μΌμ΄μ€μ νΈμμ μ 보 μ
λ ₯ λ°κΈ°
int arr[n][n];
for(int i = 0; i < n; ++i){
for(int j = 0; j < n; ++j){
cin >> arr[j][i];
}
}
//ν
μ€νΈ μΌμ΄μ€μ νΈμμ μ 보λ₯Ό μννλ©° μ΅λμ λ¨λ°±μ§ ν¨μμ ꡬνκΈ°
int temp[n + n], current, max = -1;
for(int i = 1; i < n - 1; ++i){ //첫 μ€κ³Ό λ§μ§λ§ μ€μ μ μΈ
for(int j = 1; j < n - 1; ++j){ //첫 μ€κ³Ό λ§μ§λ§ μ€μ μ μΈ
for(int k = 0; k < n; ++k){ //κ°λ‘ μΈλ‘ λ°©ν₯ μνλ₯Ό νλ²μ μ§ννκ³ temp λ³μμ μ
λ ₯
temp[k] = arr[i][k];
temp[k + n] = arr[k][j];
}
current = uniqueSum(temp, n + n); //μ€λ³΅μ μ μΈν λͺ¨λ κ°μ ν©μ ꡬν¨
if(max < current){
max = current; //μ΅λκ°μ κ°±μ
}
}
}
return max;
}
int main() {
//ν
μ€νΈ μΌμ΄μ€μ μ(T) μ
λ ₯ λ°κΈ°
int t;
cin >> t;
//ν
μ€νΈ μΌμ΄μ€μ μλ§νΌ ν
μ€νΈλ₯Ό λ°λ³΅
for(int i = 0; i < t; ++i){
cout << "#" << (i + 1) << " " << test() << endl;
}
return 0;
}