티스토리 뷰
프로그래머스 42840번 - 모의고사

요구사항
1. 수포자 삼인방 중 가장 많은 문제를 맞힌 사람이 누구인지 반환하라.
2. 1번 수포자는 1번, 2번, 3번, 4번, 5번 순으로 반복하여 답을 찍는다.
3. 2번 수포자는 2번, 1번, 2번, 3번, 2번, 4번, 2번, 5번 순으로 반복하여 답을 찍는다.
4. 3번 수포자는 3번, 3번, 1번, 1번, 1번, 2번, 2번, 4번, 4번, 5번, 5번 순으로 반복하여 답을 찍는다.
요구사항 분석 및 풀이과정
1. 각 수포자는 일정한 패턴으로 반복하여 답을 찍기때문에, 패턴의 길이와 나머지 연산을 통하여 i번째 찍는 답을 알아내면 된다.
2. 각 수포자가 맞힌 문제의 수를 구한 후 가장 많이 맞춘 사람을 반환한다.
소스코드 작성
import java.util.stream.IntStream;
class Solution {
public int[] solution(int[] answers) {
int[] first = { 1, 2, 3, 4, 5 };
int[] second = { 2, 1, 2, 3, 2, 4, 2, 5 };
int[] third = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int[] oks = new int[3];
for(int i = 0; i < answers.length; i++) {
oks[0] += (first[i % 5] == answers[i] ? 1 : 0);
oks[1] += (second[i % 8] == answers[i] ? 1 : 0);
oks[2] += (third[i % 10] == answers[i] ? 1 : 0);
}
int max = Math.max(Math.max(oks[0], oks[1]), oks[2]);
return IntStream.range(0, 3).filter(i -> oks[i] == max).map(i -> i + 1).toArray();
}
}
결과

소스코드 깃허브 주소
'코딩테스트 > 알고리즘' 카테고리의 다른 글
| [알고리즘]프로그래머스 12945번 - 피보나치 수 (0) | 2022.01.09 |
|---|---|
| [알고리즘]프로그래머스 12909번 - 올바른 괄호 (0) | 2022.01.09 |
| [알고리즘]프로그래머스 42587번 - 프린터 (0) | 2022.01.09 |
| [알고리즘]프로그래머스 42586번 - 기능개발 (0) | 2022.01.09 |
| [알고리즘]프로그래머스 12949번 - 행렬의 곱셈 (0) | 2022.01.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 연결리스트
- 오늘의집
- dfs
- 정렬
- kotlin
- dp
- 비트연산
- 카카오
- 쓰레드
- 문자열
- 우선순위큐
- 해쉬
- sql
- JPA
- 구현
- 스트림
- 회고
- 코드 스니펫
- set
- 스택
- 탐욕법
- k8s
- TDD
- 프로그래머스
- 코딩인터뷰
- 알고리즘
- Java
- Uber
- dsu
- BFS
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 29 | 30 | 31 |
글 보관함