ballqs 님의 블로그
TIL - 2024년 07월 18일 공부한 내용 정리하기(Set) 본문
1.오늘 배운 것
2022 카카오 블라인드 코딩 문제를 풀다가 어떻게 접근해야할지 수없이 고민을 하다가 배운 것이 있다.
Set을 사용하는 것과 Map에 Set를 적용하여 사용하는 방법에 대해서 알게 되었다.
2.문제 풀어나가는 과정
2022 카카오 블라인드 신고 결과 받기 코딩 문제를 푸는 도중 문제에 맞닥뜨렸다.
각 멤버가 다른 멤버를 신고하며 횟수에 따른 메일 발송 유무를 정하는 그런 프로세스가 필요했다.
다만 중복 신고가 있으면 1회 신고한 것으로 간주한다는 특수 조건이 있었다
어떻게 접근할까 고민을 많이 하다가 생각해낸 것이 Set이였다.
중복으로 신고를 해도 Set를 통해 중복 요소를 허용하지 않게 된 것이다.
Set의 기본 사용은 아래와 같다.
Set<String> set= new HashSet<>();
set.add("a");
set.add("a");
System.out.println(set); // "a"
다만 위 예제대로라면 A멤버가 B멤버를 신고한 내역은 어떻게 저장할까? 고민 끝에 Map에 Set를 넣어서 적용해보았다.
Map<String , Set<String>> report_history = new HashMap<>();
report_history.put("멤버이름" , new HashSet<String>());
위 코드의 방법으로 Map에 중복제거된 각 멤버별 신고리스트를 추려 내는 것이 가능해졌다.
그렇게 진행하여 문제 풀어 나갈 수 있게 되었다.
그리고 공부한 Set은 따로 기술로 정리 해두었다.
위에 작성한 문제는 아래와 같다.
3.해당 개념이 중요한 이유
Set이라는 키워드 자체를 몰랐더라면 아마 방향성 조차도 잡지 못하고 풀지 못했을 문제였을것이다.
해당 문제를 풀수 있도록 도와주신 튜터님께 감사의 말씀드립니다.
Set을 사용했기에 Map안에 Map를 다시 집어넣는 그런 생각을 멈추었다. 런타임 일어나요ㅠㅠ
그리고 갈길이 더 명확하게 보이기 시작하였고 중복제거가 되기 시작하니 어떻게 풀어나갈지 시야가 보였다.
그렇게 해당 문제를 풀고나서 다른 사람 문제 풀이 방식을 봤는데 Arrays.stream(배열).distinct() 를 사용했다...
저건 또 뭐지?... 공부할 거리가 하나 더 늘었다.
'내일배움캠프 > Java' 카테고리의 다른 글
TIL - 2024년 08월 01일 - 팀 프로젝트 시작 (0) | 2024.08.01 |
---|---|
TIL - 2024년 07월 19일 공부한 내용 정리하기(int long BigInteger) (0) | 2024.07.19 |
TIL - 2024년 07월 17일 공부한 내용 정리하기(for문 수행순서 , toCharArray , StringBuilder) (0) | 2024.07.17 |
TIL - 2024년 07월 16일 공부한 내용 정리하기(소수 로직, 약수 로직, Integer 비교) (0) | 2024.07.16 |
[프로그래머스 코딩문제] 2016년 - JAVA (0) | 2024.07.15 |