-
신고 결과 받기 2022 카카오 신입 공채 1차 온라인 코딩테스트 1번문제카테고리 없음 2022. 7. 31. 08:24728x90
소개
이 전에 문제를 풀고 느낀건데 항상 문제를 보면
머리로 생각을 하는데 이걸 그냥 생각만하는게아니라 위에 문제처럼 애초에 단계를 적어두면 좀 수월하게 풀리는거같아서
에디터에 일단 어떻게 해야지라고 적어두고 풀었습니다. 기억력이 좋으면 상관없지만
저는 굉장히 머리가 안좋은 편이기떄문에 적으면서 풀려구요아래 문제입니다. 아래문제는 어떻게 할지 단계를 주고 문제를 풀라고해요
카카오 코딩테스트 아이디 추천(프로그래머스)[Java]
소개 블로그 이전 후 다시 티스토리로 오고나서 정말 오랜만에 쓰는 글이네요https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭..
fast-it.tistory.com
import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.function.DoubleUnaryOperator; import java.util.stream.Collectors; import javax.swing.plaf.basic.BasicListUI; class Solution { static int[] solution(String[] id_list, String[] report, int k) { //1. [유저, list(유저가 신고한 아이디 들)]로 배열을 만들어준다 //2.신고당한 애들을 토대로 정지를 주고 정지당한 애들로 따로 배열을 만들어주고 //3. 신고당한 애들하고 모든 유저가 신고한 아이디들을 비교해주면서 Countgㅐ준다 //4. 한 유저가 여러번 신고한건 1회로 측정 int[] answer = new int[id_list.length]; List<String[]> report_list = new ArrayList<>(); List<String> ban = new ArrayList<>(); //신고당한 애들 List<String> banList = new ArrayList<>();//정지당한애들 for(int i = 0; i < id_list.length; i++){ String[] temp = {id_list[i],new String()}; report_list.add(temp); } List<String> temp = new ArrayList<>(); for(var x : report){ temp.add(x); } List<String> notOverlap_report = temp.stream().distinct().collect(Collectors.toList()); for(var x : notOverlap_report){ String[] arr = x.split(" "); int idx = Arrays.asList(id_list).indexOf(arr[0]); report_list.get(idx)[1] += arr[1] + " "; ban.add(arr[1]); } //k번 이상 신고당한 애들 정지 리스트에 추가 for(var x : id_list){ if(k <= Collections.frequency(ban, x)){ banList.add(x); } } for(int i = 0; i < id_list.length; i++){ String[] arr = report_list.get(i)[1].split(" "); int count = 0; for(var x : arr){ if(banList.indexOf(x) != -1){ count++; } } answer[i] = count; } System.out.println(Arrays.toString(answer)); return answer; } }
후기
처음에 제출했을떄 4점이떳는데 문제가 중복을 생각하지않았습니다.
자꾸 테스트가 통과되지않는다면 한 유저가 여러번 신고한건 1회로 치환하는걸 잊지않았나 생각해보세요
일어나자마자 푼거라 코드가 많이 더럽네요 근데 충분히 읽을만 한거같으니까 리팩토링은 하지않겠습니다
728x90