[Coding test] 0405_no.2 (java)

2020-04-05

Coding test / 0405_no.2

문제설명

유출 x

풀이

package T0405;

//30min
public class t2 {

    public int solution(String answer_sheet, String[] sheets) {
        int answer = 0;
        char as[] = new char[answer_sheet.length()];
        
        int max = 0;
        
        for(int i=0; i<answer_sheet.length(); i++)
        	as[i] = answer_sheet.charAt(i);
        
        for(int i=0; i<sheets.length; i++) {
        	for(int j=i+1; j<sheets.length; j++) {
        		
        		int serise = 0;
        		int s = 0;
        		int plus = 0;
        		
        		for(int k=0; k<answer_sheet.length(); k++) {//여기서 비교
        			if(sheets[i].charAt(k) == sheets[j].charAt(k)) {
        				if(sheets[i].charAt(k) != as[k]) {
        					plus++;
        					serise++;
        					
            				if(s==0 && k == answer_sheet.length()-1)
        						s = 1;
        				}
        			}
        			
        			else {
        				s = Math.max(s, serise);
        				serise = 0;    					
        			}
        		}
        		
        		max = Math.max(max, plus + (s*s));
        	}
        }
        
        answer = max;
        
        return answer;
    }
	
	public static void main(String[] args) {
		
	}
}

후기 (30min)

음.. 사실 답이 온전히 맞는 건지는 모르겠지만,

comparator 를 이용해 연속된 값(seirse)과 그냥 조건에 맞는 오답(plus)을 찾아내서 max값을 구했다