2023. 10. 11. 14:05ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1216
-> ์ด์ ๋ฌธ์ ํ์ด
9. ๊ฒฉ์ํ ์ต๋ํฉ
์ค๋ช
5*5 ๊ฒฉ์ํ์ ์๋๋กธ ๊ฐ์ด ์ซ์๊ฐ ์ ํ์์ต๋๋ค.
N*N์ ๊ฒฉ์ํ์ด ์ฃผ์ด์ง๋ฉด ๊ฐ ํ์ ํฉ, ๊ฐ ์ด์ ํฉ, ๋ ๋๊ฐ์ ์ ํฉ ์ค ๊ฐ ์ฅ ํฐ ํฉ์ ์ถ๋ ฅํฉ๋๋ค.
์ ๋ ฅ
์ฒซ ์ค์ ์์ฐ์ N์ด ์ฃผ์ด์ง๋ค.(2<=N<=50)
๋ ๋ฒ์งธ ์ค๋ถํฐ N์ค์ ๊ฑธ์ณ ๊ฐ ์ค์ N๊ฐ์ ์์ฐ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์์ฐ์๋ 100์ ๋์ง ์๋๋ค.
์ถ๋ ฅ
์ต๋ํฉ์ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ 1
5
10 13 10 12 15
12 39 30 23 11
11 25 50 53 15
19 27 29 37 27
19 13 30 13 19
์์ ์ถ๋ ฅ 1
155
๋ฌธ์ ํ์ด 1
public int solution(int n, int[][] num) {
ArrayList<Integer> tmp = new ArrayList<>();
int sum3 = 0;
int sum4 = 0;
for (int i = 0; i < num.length; i++) {
int sum = 0;
int sum2 = 0;
for (int j = 0; j < num[i].length; j++) {
sum += num[i][j];
sum2 += num[j][i];
}
sum3 += num[i][i];
sum4 += num[i][n-1 - i];
tmp.add(sum);
tmp.add(sum2);
tmp.add(sum3);
tmp.add(sum4);
}
return tmp.stream().max(Integer::compareTo).get();
}
๐ฉ๐ป๐ป : ์ด ๋ฌธ์ ๋ ๊ฐ ํ์ ํฉ, ๊ฐ ์ด์ ํฉ, ๋๊ฐ์ ์ ํฉ์ ๊ฐ๊ฐ ๊ตฌํด์ ๊ฐ์ฅ ํฐ ๊ฐ์ ๋ฆฌํดํด์ผ ํ๋ค.
2์ฐจ์ ๋ฐฐ์ด์ด๊ธฐ ๋๋ฌธ์ ์ด์ค for๋ฌธ์ ์ฌ์ฉํด์ ํฉ์ ๊ตฌํด์ผ ํ๋ค.
์ฐ์ , sum1 ์ ํ์ ํฉ์ ๊ตฌํ๊ธฐ ๋๋ฌธ์ num[i][j] ์ ํฉ ์ด๊ณ , sum2๋ ์ด์ ํฉ์ ๊ตฌํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ num[j][i] ์ ํฉ์ ๊ตฌํ๊ณ
sum3 ์ ์ผ์ชฝ์์ ์์ํ๋ ๋๊ฐ์ ์ ํฉ์ด๋ฏ๋ก num[i][i]์ ํฉ์ ๊ตฌํด์ฃผ๊ณ , sum4์๋ ์ค๋ฅธ์ชฝ์์ ์์ํ๋ ๋๊ฐ์ ์ ํฉ์ด๋ฏ๋ก num[i][n-1-i] ์ ํฉ์ ๊ตฌํด์ฃผ๋ฉด ๋๋ค.
๋๋ ์ด ๊ฐ๋ค์ ArrayList์ ๋ด๊ณ , ๊ทธ ๋ค์ stream์ max ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์ต๋๊ฐ์ ๊ตฌํด ๋ฆฌํดํ๋ค.
๋ฌธ์ ํ์ด 2
public int solution2(int n, int[][] arr) {
int answer = Integer.MIN_VALUE;
int sum1, sum2; // sum1 ํ์ ํฉ, sum2 ์ด์ ํฉ
for (int i = 0; i < n; i++) {
sum1 = sum2 = 0;
for (int j = 0; j < n; j++) {
sum1 += arr[i][j];
sum2 += arr[j][i];
}
answer = Math.max(answer, sum1);
answer = Math.max(answer, sum2);
}
sum1 = sum2 = 0;
for (int i = 0; i < n; i++) {
sum1 += arr[i][i];
sum2 += arr[i][n - i - 1];
}
answer = Math.max(answer, sum1);
answer = Math.max(answer, sum2);
return answer;
}
๐พ : ๊ฐ์ฌ๋์ ๋ ๊ฐ๋จํ๊ฒ? ๋ฌธ์ ๋ฅผ ํ์๋ค. sum1, sum2 ๋ณ์ ๋๊ฐ๋ง ์ฌ์ฉํ๊ณ ํ์ ํฉ, ์ด์ ํฉ / ๋๊ฐ์ ์ ํฉ์ ๋ฐ๋ก ๊ตฌํ๋ค.
(๊ตฌํ๋ ๋ฐฉ์์ ๋์ผํ๋ค.) ๋์ Math.max๋ฅผ ์ด์ฉํด์ answer์ ํฐ ๊ฐ์ ๊ณ์ ์ ์ฅํ๊ณ ์๋ค๊ฐ. ๋ง์ง๋ง์ return ํด์คฌ๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋์ฒ๋ผ ๊ตณ์ด arraylist์ ๊ฐ์ ๋ด๊ณ max๋ฅผ ๊ตฌํ์ง ์์๋ ๋๋ค..!