hogay88   3년 전

Find 함수에서 아래와 같이하면 정상적으로 동작하고

public static String find(Map<String, String> parentMap, String name) {

    if(parentMap.get(name).equals(name) ) {
        return name;
    } else {
        String parent = find(parentMap, parentMap.get(name));
        parentMap.put(name, parent);
        return parentMap.get(name);
    }

아래와 같이하면 왜 시간초과가 뜰까요?

제가 생각하기에는 위의 코드 중  아래 코드는 불필요한 코드라고 생각해서 지우고 하나로 줄였는데 시간초과가 발생하네요.

 parentMap.put(name, parent);
public static String find(Map<String, String> parentMap, String name) {

    if(parentMap.get(name).equals(name) ) {
        return name;
    } else {
        return find(parentMap, parentMap.get(name));
    }
}

shg9411   3년 전

parent 값이 다를 때 찾아서 저장해주지 않으면, 다음 탐색이 있다면 또 같은 일을 반복해야 합니다.

댓글을 작성하려면 로그인해야 합니다.