파란색 : 풀면서 어려웠던 부분 or 고려해야 될 부분

빨간색 : 해결방법

초록색 : 느낀점

문제


우선 문제를 봤을 때 고려할 부분으로는 1,2,3학생 답 배열의 담겨있는 수들의 규칙이다.   

 

 

내 풀이


학생 답 각각 배열을 생성하고 문제에서 보여주는 값들 중 다시 반복이 되는 수 전까지 담아준다.  

int[] st1 = new int[5] { 1, 2, 3, 4, 5 }

int[] st2 = new int[8] { 2, 1, 2, 3, 2, 4, 2, 5 }

int[] st3 = new int[10] { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 }

그리고 정답배열을 순회하면서 학생 배열과 비교하고 학생배열의 값과 같다면 정답카운트인 score 배열의 값을 변경 시켜주도록 한다.  (코드는 5,8,10으로 나누었지만 확장성으로 st1.Length으로 나누어도 된다)

제한조건으로 최고점자가 동률이 나오면 오름차순으로 모두 출력해주어야 하기 때문에 for문을 통해 최대값을 구하고 그 값과 같은 배열만 list에 담도록 했다. 

 

다른 사람의 풀이


우선 차이점으로 학생배열을 2차원 배열로 만들고, 이중for문을 통해 if문 한개로 모든 학생배열을 순회하는 방식으로 정답카운트를 체크하고 있다. 그리고 배열.Max()함수를 통해 최대값을 찾고 그 리스트를 리턴하는 방식이다

내 코드처럼 각각 배열을 3개 생성하지 않고, 이차원배열로 생성했으며, if문으로 각자 배열을 매직넘버인 1,2,3를 넣어서 순회하는 것이 아닌 이중포문으로 한번에 비교를 한다는점에서 더 효율적인 풀이법인 것같다.


 

 

+ Recent posts