Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 보간 탐색
- interpolation search
- 유클리디안 거리
- Java
- 스택
- 맨하탄 거리
- space complexity
- 알고리즘 성능분석
- 순열
- 정렬
- 빅-오
- 연결리스트
- 유클리드 거리
- 알고리즘
- level2
- LinkedList
- 그리디
- 수식트리
- 큐
- 순차 리스트
- visited
- 단체사진 찍기
- list
- 프로그래머스
- 탐욕법
- java 정규표현식
- android
- 약수의 총 합
- 자료구조
- 양방향 연결 리스트
Archives
- Today
- Total
개발자로 살아남기
[Level 1] 완주하지 못한 선수 (Java) 본문
문제는 해시 카테고리에 있지만 sort를 이용해서 풀었었다. 아래는 sort를 이용해 풀었을 때의 코드와 정확성 및 효율성 테스트 결과이다.
public String solution(String[] participant, String[] completion){
Arrays.sort(participant);
Arrays.sort(completion);
int i=0;
for(i=0; i<completion.length; i++){
if (!participant[i].equals(completion[i])){
return participant[i];
}
}
return participant[i];
}
그리고 아래는 hash를 이용해 풀었을 때의 정확성 및 효율성 테스트 결과이다.
GitHub - banjjak2/Programmers
Contribute to banjjak2/Programmers development by creating an account on GitHub.
github.com
public String solution(String[] participant, String[] completion){
String answer = "";
HashMap<String, Integer> hm = new HashMap<String, Integer>();
for (String string : participant) {
if (hm.get(string) == null){
hm.put(string, 1);
}
else{
hm.put(string, hm.get(string) + 1);
}
}
for (String string : completion) {
hm.put(string, hm.get(string) - 1);
}
for (Map.Entry<String, Integer> entry : hm.entrySet()) {
if (entry.getValue() != 0){
answer = entry.getKey();
break;
}
}
return answer;
}
효율성 테스트를 보면 메모리 양은 비슷하지만, 시간을 비교했을 때 상당한 시간 차이가 발생했었다. 내가 사용한 Arrays.sort 메소드는 내부적으로 TimSort 알고리즘을 사용하는데, 이 알고리즘은 Merge Sort 알고리즘을 기반으로 작성되었으며, Insertion Sort 알고리즘과 Merge Sort 알고리즘의 결합 형태라고 한다.
https://d2.naver.com/helloworld/0315536
HashMap의 경우 Key, Value 형식으로 구현이 되어 있는데, 키값을 알면 바로 Value 값을 알 수 있기 때문에 속도가 빠른 것으로 판단된다.
https://d2.naver.com/helloworld/831311
각 Sort 알고리즘 및 데이터 구조의 시간 복잡도는 아래와 같다.
'0x20. 알고리즘 > 0x22. 프로그래머스' 카테고리의 다른 글
[Level 2] 전화번호 목록 (0) | 2021.09.28 |
---|---|
[Level 2] 124 나라의 숫자 (0) | 2021.09.16 |
[Level 2] 멀쩡한 사각형 (0) | 2021.09.15 |
[Level 2] 단체사진 찍기 (Java) (0) | 2021.09.08 |
프로그래머스 Level 1 문제풀이 리스트 (0) | 2021.09.06 |