본문 바로가기
JAVA

코딩테스트연습->완전탐색->모의고사

by Hwoarang757 2021. 8. 7.

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

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr

 

효율적인 코드를 작성하는 그날까지 .....개념없고 수포자인 저는.... 연습을 계속 해보려고 합니다 ㅠㅠ

 

import java.util.*;

class Solution {

 
    public  int[] solution(int[] answers) {
        int[] answer = {};

        if(answers.length <= 0) return answer;

        ArrayList<Integer[]> h = new ArrayList<>();
        Integer[] h1 = {1, 2, 3, 4, 5};
        Integer[] h2 = {2, 1, 2, 3, 2, 4, 2, 5};
        Integer[] h3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};

        h.add(h1);
        h.add(h2);
        h.add(h3);

        ArrayList<Integer> list = new ArrayList<>();
        for(int i : answers)
        	list.add(i);

        Stack<Ctx> rst = new Stack<>();
        Ctx ctx = new Ctx();
        ctx.a = 0;
        ctx.b = 0;
        rst.add(ctx);

        int idxx = 0;
        for(Integer[] i : h) {
        		idxx++;
        		int val = compare(list , i);

	        	Ctx p =  rst.pop();
	            if(p.b > val) rst.push(p);
	            else if(p.b < val) {
	            	ctx = new Ctx();
	            	ctx.a = idxx;
	            	ctx.b = val;

	            	rst.push(ctx);
	            }
	            else {
	            	rst.push(p);

	            	ctx = new Ctx();
	            	ctx.a = idxx;
	            	ctx.b = val;

	            	rst.push(ctx);
	            }

        }

        rst.removeIf(a -> {
        	return a.a == 0;
        });

        //rst.sort((a,b) -> {
        //	return Integer.compare(a.b, b.b);
        //});

        answer = new int[rst.size()];

        for(Ctx c : rst) {
        	System.out.println(String.format("%d %d" , c.a, c.b));
        }

        for(int i = 0; i < rst.size() ; i++) {
        		answer[i] = rst.get(i).a;
        }
        return answer;
    }

    public  int compare(ArrayList<Integer> list, Integer[] h ) {

    	int d[] = {0};
    	int r[] = {0};

    	/*
    	Arrays.asList(h).subList(0, ( list.size() > h.length ? h.length : list.size()) ).forEach(x -> {
    		if(x == list.get(d[0])) r[0]++;

    		d[0]++;
    	});
    	*/

    	list.forEach(x -> {

    		if(x == Arrays.asList(h).get(d[0])) r[0]++;

    		d[0]++;

    		if(d[0] >= Arrays.asList(h).size()  ) {
    			d[0] = 0;
    		}

    	});


    	return r[0];
    }

    public  class Ctx {
    	public int a;
    	public int b;
    }

}