4195번 - 친구 네트워크
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)); } }
parent 값이 다를 때 찾아서 저장해주지 않으면, 다음 탐색이 있다면 또 같은 일을 반복해야 합니다.
댓글을 작성하려면 로그인해야 합니다.
hogay88 3년 전
Find 함수에서 아래와 같이하면 정상적으로 동작하고
아래와 같이하면 왜 시간초과가 뜰까요?
제가 생각하기에는 위의 코드 중 아래 코드는 불필요한 코드라고 생각해서 지우고 하나로 줄였는데 시간초과가 발생하네요.