❔
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 |
댓글