728x90
반응형
https://github.com/ROUTINE-STUDY/Algorithm
ROUTINE-STUDY/Algorithm
초보 알고리즘 스터디 / 누구나 참여 가능 :runner:. Contribute to ROUTINE-STUDY/Algorithm development by creating an account on GitHub.
github.com
알고리즘 스터디를 진행하고 있습니다.
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
문의는 댓글 혹은 GitHub 주소를 참고해주세요.
문제 출처 : https://leetcode.com/problems/destination-city/
Destination City - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
문제 설명
배열이 주어집니다. [서울, 부산]의 의미는 서울에서 부산으로 나가는 경로가 존재함을 의미합니다.
다양한 경로 중 더이상 나가는 경로가 없는 목적지 도시가 존재합니다.
그 도시를 반환하세요.
풀이 방법
목적지 도시는 어떠한 경우에도 배열의 첫 번째 도시가 될 수 없음을 이용하였습니다.
1. 첫 번째 도시들의 이름을 StringBuilder 객체에 이어 붙입니다.
2. 두 번째 도시들 중 첫 번째 도시에 포함되어있지 않다면 반환합니다.
내 코드(JAVA)
// 목적지는 어떠한 경로의 첫 번째 도시가 될 수 없음을 이용
public String destCity(List<List<String>> paths) {
String res = "";
StringBuilder firstCitys = new StringBuilder();
// 첫 번째 도시 세팅
for(List<String> path : paths) {
String firstCity = path.get(0);
firstCitys = firstCitys.append(firstCity);
}
// 두 번째 도시들 중 첫 번째 도시에 해당하지 않는 도시 찾기
for(List<String> path : paths) {
String lastCity = path.get(1);
if(firstCitys.indexOf(lastCity) < 0) {
res = lastCity;
break;
}
}
return res;
}
다른 사람 코드
public String destCity(List<List<String>> paths) {
Set<String> cities = new HashSet<>();
for (List<String> path : paths) {
cities.add(path.get(0));
}
for (List<String> path : paths) {
String dest = path.get(1);
if (!cities.contains(dest)) {
return dest;
}
}
return "";
}
String 카테고리의 문제임을 알고 있어 Set을 생각하지 못하였습니다.
전체적인 로직은 유사하지만 Set을 사용하여 첫 번째 도시 목록에 불필요한 중복 데이터를 삽입하지 않습니다.
HashSet의 contains 메서드는 O(1) 시간 복잡도를 가지기 때문에 속도도 더 빠르네요.
문제의 카테고리에 종속되지 말고, 다양한 측면으로 문제를 바라보는 습관을 가지겠습니다.
728x90
반응형
'알고리즘' 카테고리의 다른 글
[LeetCode/JAVA] 21. Merge Two Sorted Lists (0) | 2021.07.24 |
---|---|
[프로그래머스/JAVA] 네트워크 (0) | 2021.07.24 |
[LeetCode/JAVA] 169. Majority Element (0) | 2021.07.21 |
[LeetCode/JAVA] 103. Binary Tree Zigzag Level Order Traversal (0) | 2021.07.20 |
[LeetCode/JAVA] 70. Climbing Stairs (0) | 2021.07.20 |
댓글