문제: https://school.programmers.co.kr/learn/courses/30/lessons/258712
class Solution {
public int solution(String[] friends, String[] gifts) {
// 선물 주고받은 횟수 저장
int len = friends.length;
int[][] historys = new int[len][len];
// 결과 저장용
int[] answer = new int[len];
// 선물 지수를 저장
int[] points = new int[len];
// 1. gifts 배열을 통해서 주고받은 기록을 history에 넣기 (friends에 저장된 인덱스로 history에 저장돼야함)
for(String gift : gifts){
String[] history = gift.split(" ");
// history = [from, to] -> friends 에서 index값 찾기
int from = 0;
int to = 0;
for(int i = 0; i < len; i++){
if(friends[i].equals(history[0])){
from = i;
}
if(friends[i].equals(history[1])){
to = i;
}
}
historys[from][to] += 1;
}
// 2. 행렬을 가지고 선물지수 구하기
for(int i = 0; i < len; i++){
int give = 0;
int take = 0;
for (int j = 0; j < len; j++) {
give += historys[i][j];
}
for (int j = 0; j < len; j++) {
take += historys[j][i];
}
int count = give - take;
points[i] = count;
}
// 3. 비교하기 = 받는 횟수 구하기
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
if (i == j) continue;
int give = historys[i][j];
int take = historys[j][i];
if (give > take) {
answer[i]++; // 선물을 더 적게 준 경우
} else if (give == take) {
// 선물 지수를 기준으로 비교
if (points[i] > points[j]) {
answer[i]++;
}
}
}
}
int max = 0;
for(int i : answer){
if( i > max){
max = i;
}
}
return max;
}
}
자바의 문자열 배열은 순서대로 저장된 데이터 집합으로 데이터를 저장하거나 특정 인덱스에 접근하는 기능만 제공한다
→ 특정 요소의 위치를 찾는 기능은 제공되지 않는다.(List에서만 제공)
참 쉽쥬잉?