[プログラマー]模擬試験(JAVA)


質問する


https://programmers.co.kr/learn/courses/30/lessons/42840

マイコード

public List<Integer> solution(int[] answers) {
	//1
	int[] patn1 = {1, 2, 3, 4, 5};
	int[] patn2 = {2, 1, 2, 3, 2, 4, 2, 5};
	int[] patn3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
	List<int []> patnList = new ArrayList<>();
	patnList.add(patn1);
	patnList.add(patn2);
	patnList.add(patn3);
	List<Integer> rlt = new ArrayList<>();
	int max = 0;
    	//2
	for(int i=0; i<patnList.size(); i++){
		int count = 0;
		int k=0;
		for(int j=0; j<answers.length; j++){
			if(patnList.get(i)[k] == answers[j])
				count ++;
			if(k == patnList.get(i).length -1){
				k = 0;
			} else{
				k++;
			}
			
		}
		//3
		if(count > max){
			max = count;
			rlt = new ArrayList<>();
			rlt.add(i+1);
		}else if(count == max){
			rlt.add(i+1);
		}
		
	}
	
	return rlt;
}

に答える

  • 歳の学生の撮影パターンをリストに載せた.
  • 反復文では、与えられた答えがcountである場合、countが追加され、撮影モードの要素(k)が最後に到着すると、最初の要素に再初期化される.
  • は最も多くの学生を並べた.