문제 확인은 프로그래머스 홈페이지에서 확인하세요!

Link : https://programmers.co.kr/learn/courses/30/lessons/83201

 

코딩테스트 연습 - 2주차

[[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD"

programmers.co.kr

 

 

이번 문제의 핵심은 '행' 단위로 무언가 작업을 하지 않아도 된다는 점이다.

 

행은 자기 자신이 자신을 포함한 다른 학생들에게 부여한 점수인데 따로 조건을 줘야하는 상황이 주어지진 않았다.

 

 

결국 포인트는 열 단위의 데이터들의 작업을 어떻게 진행 할 것인가이다.

 

일단 부족한 내 지식으로는 이중 for문이 무조건 돌아가야한다고 생각했으며

우선적으로 주어야 할 조건을 정리하였다.

 

1. "내 점수"중에 "내가 나에게 부여한" 점수가 최댓값이냐 최솟값이냐

2. "내 점수"와 같은 점수가 있는가 ==> 같은 점수가 있다면 점수 계산에서 제외되지 않는다.

3. 위의 두가지 조건을 확인하고 평균을 구하기

 

 

나는 이번 문제의 포인트에서 열 단위로 흩어진 데이터의 최대 최소값을 어떻게 구하느냐를 포인트로 잡고 코드를 짰다.

배열에서 최대, 최소값을 알 수 있는 Arrays.stream.max() or min()을 쓰고 싶었고

이걸 쓰기 위해선 본인의 점수만 담겨진 배열이 필요했기 때문에 따로 배열을 선언해주었다.

 

핵심 조건인 flag과 count를 사용해서 조건을 준 다음에 점수를 부여해 주었다.

 

 

 

2차원 배열에서 열단위로 놓여진 데이터를 컨트롤하는게 쉽지 않았다.

크게 어려운 문제는 아니었지만 문제의 핵심이 한눈에 보이지 않아 초반에 조금 해맸다

+ Recent posts