강의로 돌아가기
guswns3371

자바 정확성 : 50 효율성 :0 뭐가 문제인가요? ㅠㅠ

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Collections;
import java.util.HashSet;

class Solution {

    public String solution(String[] participant, String[] completion) {

        if( (participant.length<1 || participant.length>100000 || ((participant.length-completion.length) !=1)) )
            return "";

          for(String b : participant){
              if ( (b.length() <1 || b.length() >20 ) )
                  return "";
              for(int c=0; c<b.length(); c++){
                  if(!Character.isLowerCase(b.charAt(c)))
                      return "";
                  }
          }
        List<String> P2 = new ArrayList<String>(Arrays.asList(participant));
        List<String> C2 = new ArrayList<String>(Arrays.asList(completion));
        List<String> C3 = new ArrayList<String>(new HashSet<String>(C2));

        String answer = "";
        String isit = "";
        for(String y : P2){
            if(!C2.contains(y))
                isit = y;
        }
        if(isit.equals("")){ //중복 있을때
        for(String x : C3){

            int cntp = Collections.frequency(P2,x);
            if(cntp !=1){
            int cntc = Collections.frequency(C2,x);
              if(cntp != cntc)
                answer = x;     
            }       
        }

        }else { // 중복 없을때
            answer = isit;
        }
        return answer;   
    }
}
1 개의 답변
Demi

안녕하세요.

본 문제는 O(nlogn) 또는 O(n)으로 풀어야하는문제입니다.
작성하신 코드는 O( n2 )이네요.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.