Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 인프런
- javascript
- 독서리뷰
- Design Pattern
- JPA
- Singleton
- 공부
- 회고
- 알고리즘
- 오라클
- 후기
- 독서
- study
- 이펙티브자바
- Oracle
- 인코딩
- 람다
- 에러
- 자바
- Eclipse
- spring
- math
- 카카오톡1차
- 매핑
- Java
- 프로그래머스
- 인강리뷰
- Head First Design Pattern
- 우아한테크코스
- 디자인패턴
Archives
- Today
- Total
Lee's Grow up
[Java/알고리즘] 프로그래머스 모의고사 본문
반응형
문제 설명
배열 answers이/가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return/리턴 하도록
solution 함수를 작성해주세요.
- 시험은 최대 10,000 문로 구성되어있습니다.
- 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
- 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
입출력 예
answers | return |
[ 1, 2, 3, 4, 5 ] | [ 1 ] |
[ 1, 3, 2, 4, 2 ] | [ 1, 2, 3 ] |
입출력 예 설명
입출력 예 #1
- 수포자 1은 모든 문제를 맞혔습니다.
- 수포자 2는 모든 문제를 틀렸습니다.
- 수포지 3은 모든 문제를 틀렸습니다.
따라서 가장 문제를 많이 맞힌 사람은 수포지 1입니다.
입출력 예 #2
- 모든 사람이 2문제씩 맞췄습니다.
나의 풀이
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
32
33
34
35
36
37
38
39
|
import java.util.ArrayList;
class Solution {
public int[] solution(int[] answers) {
int person1[] = { 1, 2, 3, 4, 5 };
int person2[] = { 2, 1, 2, 3, 2, 4, 2, 5 };
int person3[] = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 };
int[] result = { checkAnswerCounter(person1, answers), checkAnswerCounter(person2, answers),
checkAnswerCounter(person3, answers) };
ArrayList<Integer> alist = new ArrayList<>();
for (int i = 0; i < result.length; i++) {
if (maxScore == result[i]) {
alist.add(i + 1);
}
}
for (int i = 0; i < returnAnswer.length; i++) {
returnAnswer[i] = alist.get(i);
}
return returnAnswer;
}
public static int checkAnswerCounter(int person[], int answer[]) {
int hitCnt = 0;
for (int i = 0; i < answer.length; i++) {
if (person[i % person.length] == answer[i]) {
hitCnt++;
}
}
return hitCnt;
}
}
|
풀이 설명
1번, 2번, 3번의 수포자는 각각 동일한 패텬으로 반복이 되게 정답을 찍기 때문에 해당 반복 구문을
각각의 person1[], person2[], person3[]의 배열로 초기화 해줍니다. 그 후 checkAnswerCounter 함수를 통해
정답의 횟수 카운터를 도출합니다.
그 후 Math클래스의 max 함수를 사용해서 정답 횟수중 가장 많이 맞춘 정답 갯수를 추출
정답 갯수가 동일한 사람 = 최대로 많이 맞춘 사람일 경우 list 컬렉션에 추가
리턴타입이 int[]이기 떄문에 리턴타입에 맞게 컬렉션을 변환 후 리턴을 해줍니다.
마치며
항상 느끼는 거지만 다른 사람의 풀이를 보면 감탄을 하게 되는거 같습니다.
저의 풀이는 제가 풀었던 방식에 대한 설명이며 최적의 방식이 아니라고 말씀을 드리며
혹시나 도움이 필요하신 분들에게 참고가 되었으면 좋겠습니다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[JAVA/알고리즘] 프로그래머스 같은 숫자는 싫어 (0) | 2019.10.22 |
---|---|
[JAVA/알고리즘] 프로그래머스 가운데 글자 가져오기 (0) | 2019.10.22 |
[JAVA/알고리즘] 프로그래머스 2016년 (0) | 2019.10.21 |
[JAVA/알고리즘] 프로그래머스 K번째 수 (0) | 2019.10.21 |
[Java/알고리즘] 프로그래머스 124 나라의 숫자 (0) | 2019.09.27 |
Comments