[코테]2022 KAKAO 신고 결과 받기 문제해결

HOU·2022년 5월 19일
0

코딩테스트

목록 보기
1/24
post-thumbnail

신고 결과 받기

신고 결과 받기

내 코드

# 남의 풀이
def solution(id_list, report, k):
    answer = []
    dic = {}
    kList = []
    report = set(report)
    reptedList = list(map(lambda x:x.split(" ")[1], report))
    for id  in id_list:
        dic[id];
        for rep in report:
            if id == rep.split(" ")[0]:
                dic[id].append(rep.split(" ")[1])
                
    for id in id_list:
        if (k <= reptedList.count(id)) :
            kList.append(id);
            
    kList = set(kList)
    for d in dic.values():
        answer.append(len(set(d).intersection(kList)))
        
    return answer

난 당연히 성공 이라고 생각했지만 시간 초과! 실패
ㅠㅠㅠ 메모리에 문제 여서 이리 저리 짱구를 돌려봣지만, 잘 안됫다.

문제 파악

  1. 나는 dictionary 자료형으로 풀려고 했다. but key 값을 잘 못 설정했다.
  2. 필요없는 리스트들이 너무 많았다. 그래서 append가 많이 일어낫다.
  3. set자료형 두개를 비교하면서 추가적인 메모리 사용이 있었던거 같다.
  4. 일 처리 하기 위한 단계가 너무 많다.
    1. id_list의 순서대로 메일을 보낸다.
    2. 신고를 당한 사람이 k개 이상 신고받았을 경우에 정지 된다.
    3. 정지 되는 id를 신고한 id를 가진 사람에게만 메일을 보낸다.
    4. 한명에서 여러명을 신고해도 2번 이상 넘어 갈 수 없다.
def solution(id_list, report, k):
	#id_list의 갯수 만큼 0을 채워준다. 
    answer = [0] * len(id_list);
    reports = {};
    
    for i in id_list:
    	reports[i] = 0
    
    for rep in set(report):
    	reports[rep.split()[1]] += 1
    
    for rep in set(report):
    	if reports[rep.split()[1]] >= k:
        	answer[id_list.index(rep.split()[0])] += 1
    
    return answer

코드 설명

  1. 처음에 변수 answer를 빈배열로 선언한 후에 .append() 를 사용하여 배열에 값을 추가해주려고 하였다. 하지만 0으로 빈배열을 만든 후에 숫자를 더해주는것이 더 효율적이라고 생각해서 바꿔주었다.
  2. id별로 신고를 몇번 당했는지 파악해야 합니다. reports라는 dictionary에 각 id를 key값으로 설정한 후에 value는 0으로 설장합니다. 우리는 몇번 신고 받았는지 알기만하면 됩니다.!
  3. set으로 중복을 제거해 준 후에
    몇번 신고당했는지 찾아줍니다!
  4. 후에 k 번 이상인 것만 id_list.index("값")으로 해당 인덱스를 찾아준 후에 1씩 더해주면 메일 발송한 내역을 확인 할수 있습니다!

소감

하루에 코테 하나씩 풀어보고 싶은데 이렇게 오래걸리고 어려울줄이야. index라는 함수도 몰랏고, 여전히 부족한게 너무 많다. 문제를 제대로 볼 수 있도록 읽기부터 다시 공부해야 되나 싶기도 하고..!

그래도 자료형을 다시 한번 공부 할수 있는 좋은 문제였고, index라는 자바스크립트의 indexof와 비슷한 함수를 배울 수 있어서 좋았다.

profile
하루 한 걸음 성장하는 개발자

0개의 댓글