-
[2022 KAKAO BLIND RECRUITMENT] 신고 결과 받기코딩 테스트/Level 1 2022. 1. 17. 01:08반응형
https://programmers.co.kr/learn/courses/30/lessons/92334
파이썬
최신 파이썬에선 dict의 순서가 유지됩니다.
def solution(id_list, report, k): report_dict = {id_: set() for id_ in id_list} for each in report: user_id, report_id = each.split(' ') report_dict[report_id].add(user_id) answer = {id_: 0 for id_ in id_list} for key, values in report_dict.items(): if len(values) >= k: for value in values: answer[value] += 1 return list(answer.values())
의미는 없지만
제너레이터를 이용해서
리포트 내에 들어 있는 문자열을 split 하면
한 줄을 더 줄일 수 있습니다.
(each.split(' ') for each in report)def solution(id_list, report, k): report_dict = {id_: set() for id_ in id_list} for user_id, report_id in (each.split(' ') for each in report): report_dict[report_id].add(user_id) answer = {id_: 0 for id_ in id_list} for key, values in report_dict.items(): if len(values) >= k: for value in values: answer[value] += 1 return list(answer.values())
Java
파이썬과 같은 로직인데 ㅠ,.ㅠ
너무 장황합니다.import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; class Solution { public int[] solution(String[] id_list, String[] report, int k) { HashMap<String, HashSet<String>> reportMap = new HashMap<>(id_list.length); for (String each : report) { String[] temp = each.split(" "); reportMap.putIfAbsent(temp[1], new HashSet<>()); reportMap.get(temp[1]).add(temp[0]); } int[] answer = new int[id_list.length]; for (String key : reportMap.keySet()) { if (reportMap.get(key).size() >= k) { for (String temp : reportMap.get(key)) { answer[Arrays.asList(id_list).indexOf(temp)]++; } } } return answer; } }
var를 쓰면 좀 덜 장황해 보일까요?
import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; class Solution { public int[] solution(String[] id_list, String[] report, int k) { var reportMap = new HashMap<String, HashSet<String>>(id_list.length); for (var each : report) { var temp = each.split(" "); reportMap.putIfAbsent(temp[1], new HashSet<>()); reportMap.get(temp[1]).add(temp[0]); } var answer = new int[id_list.length]; for (var key : reportMap.keySet()) { if (reportMap.get(key).size() >= k) { for (var temp : reportMap.get(key)) { answer[Arrays.asList(id_list).indexOf(temp)]++; } } } return answer; } }
var를 사랑합시다.
반응형