728x90
HackerRank > Prepare > Algorithms > Warmup
주어진 배열 내에서 합계 구하고 절대값 구하기
123
456
989
일 경우
1+5+9 = 15
3+5+9 = 17
|15-17| = 2
나의 풀이
//수정 전
public static int diagonalDifference(List<List<Integer>> arr) {
// Write your code here
int primary = 0;
int secondary = 0;
int result = 0;
for(int j=0; j<arr.size(); j++){
for(int i=0; i<arr.get(j).size(); i++){
if(i == j){
primary += arr.get(j).get(i);
}
if(i + j == arr.size()-1){
secondary += arr.get(j).get(i);
}
}
}
result = Math.abs(primary - secondary);
return result;
}
}
//수정 후 -> for문 하나로
public static int diagonalDifference(List<List<Integer>> arr) {
// Write your code here
int primary = 0;
int secondary = 0;
int result = 0;
int len = arr.get(0).size()-1;
for(int i=0; i<arr.size(); i++){
primary += arr.get(i).get(i);
secondary += arr.get(i).get(len-i);
}
result = Math.abs(primary - secondary);
return result;
}
}
다른 풀이
//javascript
function diagonalDifference(arr) {
let xDiagonal =0, yDiagonal=0, z=arr.length;
for(let i=0; i<arr.length; i++) {
xDiagonal += arr[i][i];
yDiagonal += arr[i][--z];
}
return Math.abs(xDiagonal - yDiagonal)
}
//another java Solution
int leftOne = 0;
int rightOne = 0;
int colIndex = arr.get(0).size() - 1;
for(int i=0;i<arr.size();i++){
for(int j=0;j< arr.get(0).size();j++){
if(i==j)
leftOne+=arr.get(i).get(j);
}
rightOne+=arr.get(i).get(colIndex);
colIndex--;
}
return Math.abs(rightOne-leftOne);
}
이중리스트