본문 바로가기
알고리즘/Java 코딩 테스트 준비

[Java] 격자판의 최대합 구하기

by Dev dreamer 2023. 2. 4.

 

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 28 29 37 27

19 13 30 13 19

 

⚡ 출력예제 1

 

155

 

💡 1. 내 생각 및 풀이과정 ( 한시간 반정도 걸린듯)


 

뭔가 노가다 성 말고 좀더 기발한 아이디어로 풀고싶었는데.

고민하다가 안돼서 그냥 풀었다.. 

일단 입력 받는것 부터 처음에 좀 생각해야 했다.

 

입력 받을때 이중포문을 이용해서 받았는데

첫번째 for 일때 StringTokenizer(br.readLine()) 으로 한줄씩 받았고

두번째 for 문에서 st.nexToken으로 하나씩 넣었다.

 

N x N 배열이니까 최대는 num에 맞추면 됐다.

 

여기서도 이중포문으로 합을 구했다.

바깥쪽 i는 고정되어 있으므로

한쪽을 고정시키고 나머지 j 를 움직여서 쭉 더하게 했따

한번에 두번을 계산하게 하기위해 cnt 1 과 cnt 2 를 이용하였다.

 

그리고 i만 이용해서 구할수 있는 대각선과 그 반대 대각선을 구해서 cnt 3, cnt 4로 list에 추가했다.

 

그리고 담아놓은 배열의 크기만큼 반복문을 돌려서 큰값을 answer에 담는식으로 해서

최종 reurn 값인 answer 을 구하였다.

 

 

 

💡 2. 강사님 풀이


 2중 포문으로 합을 구하는건 비슷한데

강사님은 Math클래스의 max 메소드의 기능을 이용해서 구하셨다.

 

🔍  최대값 구하는 방법 Math.max() 를 통해서 구할 수 있다.

 

 

 

 

 

코테 관련해서 많이 부담스러웠는데 강의를 통해 푸는 방법들을 배우니 이 시간이 즐겁습니다.

진짜 기능하나하나 다양한 방법으로 잘 가르쳐주십니다.

출처 : 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 대시보드 - 인프런 | 강의 (inflearn.com)

'알고리즘 > Java 코딩 테스트 준비' 카테고리의 다른 글

[Java] 친구가 많은 친구를 반장으로 뽑기!  (0) 2023.02.06
[Java] 봉우리 수 구하기.  (0) 2023.02.05
[Java] 등수 구하기  (0) 2023.02.04
[Java] 점수 계산  (0) 2023.02.03
[Java] 뒤집은 소수  (0) 2023.02.03

댓글