일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 알고리즘
- OAuth 인증
- 깃허브
- M1
- HashMap
- 안드로이드 스튜디오
- sort정렬
- 핸드폰 가리기
- MAC OS
- JDK
- 프로그램서
- Iterator
- homebrew
- 프로그래머스
- 코딩테스트
- 백준
- 문자열 숫자 변환
- mysql
- 해시
- 맥북
- 27866
- Eclipse
- 노선별 평균 역 사이 거리 조회하기
- github
- Android Studio
- 포맷 지정자
- 자바
- 가격이 제일 비싼 식품의 정보 출력하기
- Java
- SQL코딩테스트
Archives
- Today
- Total
개발일지
[Java] sort정렬, HashMap / 완주하지 못한 선수 본문
728x90
🔗 링크
📌 문제 설명
- 참여한 선수들의 이름이 담긴 배열 participant, 완주한 선수들의 이름이 담긴 배열 completion
- 완주하지 못한 선수의 이름을 리턴
👀 예제
✏️ 풀이 순서
- 정렬 이용해서 풀기
- 두 배열 sort정렬하기
- 두 배열이 다르게 나올 때까지 반복문 돌리기
- 마지막까지 다른게 안 나온 거면 마지막 주자가 완주하지 못한것.
- Hash 이용해서 풀기
- HashMap 생성
- HashMap<String, Integer>: Key는 String, Value는 Integer로 정의
- HashMap에 참가자 추가
- HashMap.put(Key, Value): HashMap에 Key와 Value를 한 쌍으로 입력하는 함수
- HashMap.getOrDefault('B', 0): 'B'라는 Key에 해당하는 Value가 있으면 가져오고, 없으면 0을 기본값으로 지정하겠다
ex) maria라는 key가 Value 1과 함께 저장되어 있음 → 1을 가져옴 + 1 → 2로 저장
maria라는 key 없음 → 0으르 가져옴 + 1 → 1을 저장
- HashMap에서 완주자 삭제
- HashMap.get(Key): Key에 해당되는 Value를 불러옴
- Value값이 0이 아닌 참가자 찾기
- Iterator(반복자): 저장되어 있는 요소를 읽어오는 방법
- hasNext(): 읽어올 요소가 있으면 true, 없으면 false 리턴
- next(): 다음 데이터를 리턴
- remove(): next()로 리턴받은 요소를 삭제
- HashMap.entrySet(): 키-값의 데이터를 결합된 형태로 Set에 저장하여 반환
→ 키-값이 묶인 데이터를 가져오기 때문에 keySet()보다 좋은 성능을 보임 - HashMap.keySet(): HashMap이 들고 있는 전체 Key의 배열을 반환하는 함수
- HashMap.get(Key): Key에 해당하는 Value를 반환하는 함수
- 즉, 전체 Key를 하나씩 확인해서 Value가 0이 아닌 경우 answer에 담아주는 동작을 하는 코드
- Iterator(반복자): 저장되어 있는 요소를 읽어오는 방법
- HashMap 생성
💻 코드
1. 정렬
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
// 두 배열 정렬
Arrays.sort(participant);
Arrays.sort(completion);
// 완주자 배열을 기준으로 두 배열이 다를 때까지 반복문 돌리기
for (int i = 0; i < completion.length; i++) {
if (!participant[i].equals(completion[i])) {
return participant[i];
}
}
// 찾지 못하면 마지막 주자가 완주 못한 거임
return participant[participant.length - 1];
}
}
2. HashMap
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
// HashMap 생성 (Key는 String, Value는 Integer)
HashMap<String, Integer> map = new HashMap<>();
// HashMap에 참가자 추가
for (String player: participant) {
map.put(player, map.getOrDefault(player, 0) + 1);
}
// HashMap에서 완주자 삭제
for (String player: completion) {
map.put(player, map.get(player) - 1);
}
// Value가 0이 아닌 참가자 구하기
Iterator<Map.Entry<String, Integer>> iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, Integer> entry = iter.next();
if (entry.getValue() != 0) {
answer = entry.getKey();
break;
}
}
return answer;
}
}
📚 레퍼런스
[Java/자바] 해시맵, HashMap 사용법과 EntrySet, Iterator
728x90
'Algorithm' 카테고리의 다른 글
[JAVA] Iterator entrySet(), keySet(), values() (0) | 2024.04.25 |
---|---|
[JAVA] 전화번호 목록 (0) | 2024.04.25 |
[Java] 중복제거 (HashSet) / 폰켓몬 (0) | 2024.04.24 |
Set / HashSet (0) | 2024.04.24 |
시간 복잡도 (0) | 2023.11.17 |
Comments