티스토리 뷰

Algorithm/Solution

[프로그래머스] - 모의고사

기내식은수박바 2019. 11. 27. 21:49
반응형

문제

 

조건

 

입출력 예제

 

솔루션

  1. 각 학생의 점수를 담을 배열인 score, 답을 저장할 answer, 그리고 가장 많이 맞춘 문제 수를 저장 할 max를 선언한다.
  2. pt2, pt3는 2번, 3번 학생이 답을 맞추는 패턴을 저장한 배열이다.
  3. 먼저 score 배열을 0으로 초기화 한다.
  4. 문제 갯수만큼 반복문을 수행한다.
    1. 1번 학생이 답을 맞췄는지 확인한다. 1번 학생은 순차대로 1, 2, 3, 4, 5번을 선택함으로 따로 배열을 만들 필요없이 비교하면 된다. 수식은 i % 5 + 1 인데, 5개를 주기로 패턴이 반복되며 답은 1 ~ 5 까지이므로 + 1을 해준다.
    2. 답안을 비교한 점수와 max를 비교하여 갱신한다.
    3. 2번 학생이 답을 맞췄는지 비교한다. 2번 학생2, 1, 2, 3, 2, 4, 2, 5 패턴으로 답을 선택하므로 짝수 번째는 2, 홀수 번째는 수식 i % 8 / 2 으로 된다. 8번을 주기로 돌며, i = 1, 3, 5, 7일 때, 수식에 집어넣으면 각각 0, 1, 2, 3이 나온다.
    4. 마찬가지로 답안을 비교한 점수와 max를 비교하여 갱신한다.
    5. 3번 학생이 답을 맞췄는지 비교한다. 3번 학생3, 3, 1, 1, 2, 2, 4, 4, 5, 5 패턴이고, 10번을 주기로 돌며, 짝수번째와 홀수번째의 패턴은 동일하다. 따라서 수식 i % 10 / 2가 될 것이다. 
    6. 위와 마찬자기로 max를 갱신한다.
  5. 이제 가장 많이 맞춘 문제 갯수인 max와 동일한 점수를 비교하고 그 인덱스를 순서대로 answer에 집어 넣는다.
  6. 문제를 가장 많이 맞춘 사람이 한 명 또는 두 명인 경우, 배열의 값 0을 제외하고 출력을 해야 하므로 람다 (i -> i != 0) 와 함께 filter를 사용한다.

 

Code

 

결과

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
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
글 보관함