-
[hackerRank] DiagonalDifference알고리즘 2019. 12. 10. 00:34
문제
https://www.hackerrank.com/challenges/diagonal-difference/problem
문제요약
ex)
a b c
d e f
g f i
절대값 ( (a+e+i) - (c+e+g) ) 을 출력!
접근방법
1. 좌측 대각선 (0,0) , (1,1), (2,2)
2. 우측 대각선 (0,2), (1,1), (2,0)
3. 즉 좌측대각선은 (x,y) y값 증가한다
4. 우측대각선은 (x,y) y값 감소한다
5. for문 0번째 인덱스부터 x값과 y값을 각각 증가 ,감소를 하여 변수에 담아서 계산함
package com.cm;
import java.util.ArrayList;
import java.util.List;
/**
* https://www.hackerrank.com/challenges/diagonal-difference/problem
*/
public class DiagonalDifference {
public DiagonalDifference() {
List<List<Integer>> arr = new ArrayList<>();
List<Integer> list1 = new ArrayList<>();
list1.add(11);
list1.add(2);
list1.add(4);
List<Integer> list2 = new ArrayList<>();
list2.add(4);
list2.add(5);
list2.add(6);
List<Integer> list3 = new ArrayList<>();
list3.add(10);
list3.add(8);
list3.add(-12);
arr.add(list1);
arr.add(list2);
arr.add(list3);
System.out.println(solution(arr));
}
public int solution(List<List<Integer>> arr){
int leftNum = 0 ;
int rightNum = 0;
int leftCount = 0;
int rightCount = arr.size();
for(int i =0; i<arr.size(); i++){
leftNum += arr.get(i).get(leftCount);
rightNum += arr.get(i).get(rightCount-1);
leftCount ++;
rightCount --;
}
return Math.abs(leftNum - rightNum);
}
}leftNum += arr.get(i).get(leftCount);
leftNum 변수를 사용하지않고, for문의 i변수를 이용 할 수도 있음.
'알고리즘' 카테고리의 다른 글
[hackerRank] AppleAndOrange (0) 2019.12.17 [hackerRank] AngryProfessor (0) 2019.12.17 [programmers] 자연수 뒤집어 배열로 만들기 (0) 2019.12.04 [programmers] 제일 작은 수 제거하기 (0) 2019.12.03 [Codility] PassingCars 70→100 (0) 2019.05.06