강의로 돌아가기
홍석원

이것도 안됨.

알려줘 효율성!?

작성중인 코드―Solution.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;

class Solution {
    public String solution(String[] participant, String[] completion) {
        //길이체크
        if(participant.length < 1 && participant.length > 1000000) return "";
        if(participant.length < completion.length) return "";

        //소문자체크
        for(String item : participant) {
            if(item.length() > 20) return "";
            for(int i=0; i<item.length(); i++) {
                if(!Character.isLowerCase(item.charAt(i))) {
                    return "";
                }
            }
        }

        List<String> parList = new ArrayList<String>(Arrays.asList(participant));
        List<String> comList = new ArrayList<String>(Arrays.asList(completion));
        for (Iterator<String> iter = parList.iterator(); iter.hasNext(); ) {
            String par = iter.next();
            for (Iterator<String> iter2 = comList.iterator(); iter2.hasNext(); ) {
                String com = iter2.next();

                if(par.equals(com)) {
                    iter.remove();
                    iter2.remove();
                    break;
                }
            }
        }

        return parList.get(0);
    }
}
  • 홍석원
    자답 입니다만, O(1)으로 진행해야 하기에 위 코드는 완전 잘못된 코드네요, 정렬로 해결했습니다. 홍석원 2019.01.19 18:14
1 개의 답변
Demi

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

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