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 | 31 |
Tags
- 리액트
- 카카오블라인드코딩테스트
- dfs
- SoftwareExpertAcademy
- 경제공부
- JPA
- React.js
- 달빛캠퍼스
- HashMap
- programmers
- Java
- React
- 백준
- 노마드코더 강의
- ReactJS로 영화 웹 서비스 만들기
- Array
- 재귀
- 알고리즘
- 달빛클럽
- BOJ
- 프로그래머스
- 노마드코더
- 완전탐색
- Stack
- 달빛클럽 1기
- 자바
- 달빛클럽1기
- Algorithm
- 인플레이션에서 살아남기
- SWEA
Archives
- Today
- Total
th42500의 TIL
[Java] 해시 - 완주하지 못한 선수(Lv1) 본문
https://programmers.co.kr/learn/courses/30/lessons/42576
코딩테스트 연습 - 완주하지 못한 선수
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수
programmers.co.kr
✔ 입출력 예시
❓ List와 HashMap의 차이
이 문제는 List로 풀 경우 효율성 테스트에서 통과 ❌
✔ List는 원하는 값을 찾기 위해 원하는 값이 담기 인덱스까지 순회를 함 👉 시간복잡도가 최소 O(N)
✔ HashMap은 Key와 Value로 이루어져 있어 Key를 이용하여 빠른 속도로 원하는 값을 찾을 수 있음 👉 시간복잡도 O(1)
💡 포인트
1️⃣ HashMap을 사용해서 마라톤 참여(paricipant) 선수이름(key) 별로 명수(value) 저장
2️⃣ 완주한 마라톤 선수(completion) 이름(key)이 겹칠 경우 1️⃣에서 저장한 명수(value)에서 -1씩 해줌
3️⃣ value가 0인 마라톤 선수들은 모두 완주했다는 의미로, value가 0이 아닌 선수들만 answer에 담아서 return
✔ 소스코드
package Hash;
import java.util.Arrays;
import java.util.HashMap;
public class marathon { // 완주하지 못한 선수
public static void main(String[] args) {
// BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] participant = {"leo", "kiki", "eden"};
String[] completion = {"eden", "kiki"};
System.out.println(solution(participant, completion));
}
// 프로그래머스에 입력할 답안
private static String solution(String[] participant, String[] completion) {
String answer = "";
Arrays.sort(participant);
Arrays.sort(completion);
HashMap<String, Integer> map = new HashMap<>();
for (String p : participant) {
map.put(p, map.getOrDefault(p, 0) + 1); // getOrDefault(가져와야 하는 요소의 키, 매핑된 값이 없는 경우 반환되어야 하는 기본값)
}
for (String p : completion) {
map.put(p, map.get(p) - 1);
}
for (String key : map.keySet()) { // map.keySet()
// System.out.println(String.format("선수명 : %s, 값: %d", key, map.get(key)));
if(map.get(key) != 0) {
answer = key;
}
}
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[Java] 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임 (0) | 2022.03.24 |
---|---|
[Java] 2021 KAKAO BLIND RECRUITMENT - 메뉴리뉴얼 (0) | 2022.03.22 |
[Java] 2019 KAKAO BLIND RECRUITMENT - 오픈채팅방 (0) | 2022.03.17 |
[Java] 해시 - 전화번호 목록 (Lv2) (0) | 2022.03.02 |
[Java] 해시 - 위장 (Lv2) (0) | 2022.03.01 |
Comments