티스토리 뷰
프로그래머스 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
- 해쉬
- 정렬
- 코드 스니펫
- Uber
- k8s
- 알고리즘
- 프로그래머스
- BFS
- 오늘의집
- set
- 쓰레드
- TDD
- dp
- 스트림
- 스택
- 연결리스트
- Java
- 비트연산
- 탐욕법
- sql
- 코딩인터뷰
- 카카오
- JPA
- 구현
- 문자열
- kotlin
- 회고
- 우선순위큐
- dfs
- dsu
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함