Notice
Recent Posts
Recent Comments
Link
투케이2K
27. (TWOK/ALGORITHM) [Java] 모의고사 - for 문 동일 값 확인 , 스트림 stream 목록 반환 본문
투케이2K 알고리즘
27. (TWOK/ALGORITHM) [Java] 모의고사 - for 문 동일 값 확인 , 스트림 stream 목록 반환
투케이2K 2022. 7. 14. 08:16[환경 설정 및 설명]
언 어 : Java
설 명 : 모의고사 - for 문 동일 값 확인 , 스트림 stream 목록 반환
[소스 코드]
package ex6;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
public class MainActivity7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("[Program Start]");
System.out.println("");
/**
* [모의고사]
* 1. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다
* 2. 1번 수포자가 찍는 방식 : 1, 2, 3, 4, 5 (반복)
* 3. 2번 수포자가 찍는 방식 : 2, 1, 2, 3, 2, 4, 2, 5 (반복)
* 4. 3번 수포자가 찍는 방식 : 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 (반복)
* 5. 1번 문제부터 마지막 문제까지 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하세요
* (단 , 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요)
* 6. 입출력 예시 :
* - answers = [1,2,3,4,5] / return = [1]
* - answers = [1,3,2,4,2] / return = [1,2,3]
* 7. 프로그래머스 사이트 : https://programmers.co.kr/learn/courses/30/lessons/42840
* */
// 초기 정답 배열 선언 실시
//int ans[] = {1,2,3,4,5}; // [1번]
int ans[] = {1,3,2,4,2}; // [2번]
// 결과 확인 메소드 호출 실시
System.out.println("결과 : " + Arrays.toString(solution(ans)));
}// 메인 종료
public static int[] solution(int [] answers) {
// 인풋으로 들어온 데이터 확인 실시
System.out.println("answers [정 답] : " + Arrays.toString(answers));
System.out.println("");
// 로직 처리 실시
/**
* [세부 설명]
* 1. 1번, 2번, 3번 수포자들이 찍는 반복 방식을 배열에 선언합니다
* 2. for 문을 수행하면서 세명의 값을 비교하면서 카운트 값을 증가시킨후 >> ArrayList에 데이터를 삽입합니다
* 3. ArrayList 데이터를 정렬 후 >> 정답을 맞힌 사람과 데이터 비교 후 결과를 리턴합니다
* */
int one_answer[] = {1, 2, 3, 4, 5}; // 1번 수포자가 반복적으로 찍는 방식
int two_answer[] = {2, 1, 2, 3, 2, 4, 2, 5}; // 2번 수포자가 반복적으로 찍는 방식
int three_answer[] = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}; // 3번 수포자가 반복적으로 찍는 방식
System.out.println("1번 수포자가 찍는 방식 : " + Arrays.toString(one_answer));
System.out.println("2번 수포자가 찍는 방식 : " + Arrays.toString(two_answer));
System.out.println("3번 수포자가 찍는 방식 : " + Arrays.toString(three_answer));
System.out.println("");
int people[] = new int[3]; //각 인원수에 맞게 정답 체크 배열 선언 실시
for(int i=0; i<answers.length; i++) { // for 문을 수행하면서 정답 각 항목과 수포자들 각 항목 값이 일치하는지 확인
if(answers[i] == one_answer[i]) people[0] ++; // 정답이랑 1번 수포자 정답이랑 같은 경우 카운트 증가
if(answers[i] == two_answer[i]) people[1] ++; // 정답이랑 2번 수포자 정답이랑 같은 경우 카운트 증가
if(answers[i] == three_answer[i]) people[2] ++; // 정답이랑 3번 수포자 정답이랑 같은 경우 카운트 증가
}
System.out.println("정답 개수 : " + Arrays.toString(people));
System.out.println("");
// ArrayList 배열 선언 및 데이터 삽입 실시
ArrayList <Integer> list = new ArrayList();
for (int j=0; j<people.length; j++) {
/**
* 1. people 정답 맞힌 개수 배열에서 수포자 순서별로 정답개수가 저장되어있다
* 2. list에 삽입할때는 people 배열을 순차적으로 돌면서 확인을 수행
* 3. people 배열에 같은 값을 가진 사람이 있더라도 j + 1 값으로 순차적으로 저장됩니다
* */
if(people[j] != 0) list.add(j+1); // 정답 맞힌 개수가 0이 아닌것만 데이터 삽입
}
// 결과 리턴 실시 [스트림 사용해 list 목록 반환]
return list.stream().mapToInt(i->i.intValue()).toArray();
}
}// 클래스 종료
[참고 사이트]
반응형
'투케이2K 알고리즘' 카테고리의 다른 글
Comments