Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 필기
- 농은면접
- Linux
- 인강
- algorithm
- 수박수박수박수박수?
- BOJ
- 프로그래머스
- 한국재정정보원
- 프로그래밍
- CSS
- 확인문제
- 부스트코스
- 이클립스
- 중소기업면접
- 웹개발
- 건보필기
- 연결요소의개수
- 필기후기
- 후기
- HTML
- 웹프로그래밍
- java
- 정수내림차순으로배치하기
- 웹
- 공부
- 코딩
- 알고리즘
- 백준
- 프로그래밍언어
Archives
- Today
- Total
공부하는 히욤이
[SWEA] 1209. Sum 본문
SW Expert 1209. Sum
* 문제의 저작권은 SW Expert에 있습니다.
[문제 접근]
가로, 세로 , 대각선 각각 구한 후 arraylist에 넣어서 max로 최대값 구함
\ 대각선은 i,j가 같은 경우 더하기
/ 대각선의 좌표는 x,y 좌표의 합이 행 보다 하나 작다는 것을 알아냄
[코드]
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Solution_1209 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
for (int test_case = 1; test_case <= 10; test_case++) {
br.readLine();
int[][] map = new int[100][100];
for (int i = 0; i < 100; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < 100; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
}
ArrayList<Integer> list = new ArrayList<Integer>(); //합을 담을 리스트
int rdsum = 0; // \대각선 합
int ldsum = 0; // /대각선 합
for (int i = 0; i < 100; i++) {
int rowsum = 0; //가로 열 합
int colsum = 0; //세로 열 합
for (int j = 0; j < 100; j++) {
rowsum = rowsum +map[i][j];
colsum = colsum+ map[j][i];
if (i == j) {
rdsum = rdsum + map[i][j];
}
}
for (int j = map.length-1; j >= 0; j--) {
if (i+ j == map.length-1) {
ldsum = ldsum + map[i][j];
}
}
list.add(rowsum);
list.add(colsum);
}
list.add(rdsum);
list.add(ldsum);
int max = 0;
for (int i = 0; i < list.size(); i++) {
if (list.get(i)>max) {
max = list.get(i);
}
}
System.out.println("#"+test_case + " " + max);
}
}
}
<처음 풀었던 코드>
각 행 합의 값을 바로 max값과 비교해서 구함
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[][] arr = new int[100][100]; //2차원 배열
StringTokenizer st;
for (int test_case = 1; test_case <= 10; test_case++) {
br.readLine(); //test_case 읽어 줌
for (int i = 0; i < arr.length; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < arr.length; j++) {
arr[i][j] = Integer.parseInt(st.nextToken()); //배열에 값 삽입
}
}
int rowcnt; //가로 합
int colcnt; //세로 합
int dae1cnt = 0; // /대각선 합
int dae2cnt = 0; // \대각선 합
int max = 0; //최대값
for (int i = 0; i < arr.length; i++) { //배열크기 만큼 돌림
rowcnt = 0;
colcnt = 0;
for (int j = 0; j < arr.length; j++) {
if (i == j) { // \대각선의 합을 구하는 조건 : i,j가 같음
dae1cnt += arr[i][j]; // \대각선의 합
if (max<dae1cnt) { //max값과 비교
max = dae1cnt;
}
}
if (i+j == arr.length-1) {// /대각선의 합을 구하는 조건 : i+j는 배열 크기의 -1과 같음
dae2cnt += arr[i][j]; // /대각선의 합
if (max <dae2cnt) {
max = dae2cnt;
}
}
rowcnt += arr[i][j]; // 가로의 합
if (max<rowcnt) {
max = rowcnt;
}
colcnt += arr[j][i]; //세로의 합
if (max <colcnt) {
max = colcnt;
}
}
}
System.out.println("#" + test_case + " " + max);
}
}
}
'Algorithm > SW Expert Academy' 카테고리의 다른 글
[SWEA] 1486. 장훈이의 높은 선반 (0) | 2019.08.23 |
---|---|
[SWEA] 7829. 보물왕 태혁 (0) | 2019.08.23 |
1219. 길찾기 (0) | 2019.04.06 |
1226. 미로1 (0) | 2019.04.05 |
4299. 태혁이의 사랑은 타이밍 (5) | 2019.03.05 |