코딩테스트/프로그래머스

[프로그래머스 코딩테스트] - 신고 결과 받기 (JavaScript)

mandelina 2022. 2. 12. 23:26

[매개변수]

이용자의 id가 담긴 문자열 배열 : id_list

각 이용자가 신고한 이용자 id정보가 담긴 문자열 배열 : report

정지 기준이 되는 신고 횟수 : k

처리 결과 메일 받은 횟수 배열 : answer


[제한사항] 

1 ≤ id_list의 원소 길이 ≤ 10

2 ≤ id_list의 길이 ≤ 1,000

id_list는 소문자로만 이루어져 있음 , 중복해서 들어 있지 않음

 

1 ≤ report의 길이 ≤ 200,000

3 ≤ report의 원소 길이 ≤ 21

report의 원소는 ["이용자 id 신고한id"] 형태의 문자열

 


[풀이]

각 사용자 id별로 신고한 id의 이름들을 가지고있다. 신고한 id개수가 k개 이상이면 메일이 전송된다.

 

4. idReportObject 객체를 생성해준다.

5-7 . id별로 신고한 id를 기록하는 객체를 초기화 해주는 작업 , answer배열 0으로 초기화

10-17. 배열 [신고하는 id , 신고당한 id] 를 생성후 공백기준으로 쪼개어 넣어준다.

        신고당한 id가 객체에 없다면 push 해준다.

18-26. 객체에 해당하는 id값을 가진 길이가 k(정지기준이 되는 신고횟수) 이상이라면 그 id객체에 저장되어있는 신고한 id개수만큼 answer배열에 push해준다.


[사용된 속성]

 

반복이 가능한 객체의 모든 원소를 하나씩 추출하여 변수에 담아 반복문을 수행하는 문법 

 

for in : Iterable object이면 모두 반복할 수 있는 대상이 됨.

          배열의 각 원소를 임시 변수로 담을 value에는 몇 번 째 반복되고 있는지 index가 담겨있음.

 

for of : Iterable object이지만, prototype chain에 의한 Iterable은 반복 대상에서 제외 됨.

          value에는 실제 원소의 값만 순서대로 담김.

 

 

배열 [ ]

: 전개 연산자(...)을 사용하여 좌항에서 명시적으로 할당되지 않은 나머지 배열값들을 사용할 수 있음

 

var [a1,a2, ...rest_a] = [1,2,3,4,5,6,7,8,9]

console.log(a1); // 1

console.log(rest_a) // [3,4,5,6,7,8,9]  ,  a1,a2까지 할당되었으므로 나머지 배열값 3~9이 출력

 

객체 { }

: 배열과 마찬가지로 var,let,const 적용 가능

 우항의 key값이 좌항의 변수명과 매칭

 

var [a1,a2, ...rest_a] = {  a1: 1 , a2: 2, a3 :3, a4: 4  } 

console.log(a1) ;  //10

console.log(rest_a) ;  // { a3 :3, a4: 4  }

 

index of

: 특정 문자 위치 찾기

 

"문자열" .indexOf("찾을 문자")