본문 바로가기
algorithm/문제풀이

신고 결과 받기

by yongfront 2024. 6. 20.
반응형
SMALL

https://school.programmers.co.kr/learn/courses/30/lessons/92334

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

객체를 잘 다뤄야하는 문제 느낌

이런식의 데이터를 얻을 수 있다

 

이중에 쓸만한 데이터는  list의 2번째와 3번째, 신고 한 사람 리스트와 신고 당한 횟수이다

그래야 예문의 유저 본인이 신고한 ID에 따른 각각의 정지여부만 알 수 있을 것

 

코드를 좀 정리해서

블럭여부를 판단하고

result 를 정지된 ID 의 length 만큼 0 으로 채우고 (fill 로 해도 되지만 그냥 직관적으로.. 어차피 속도는 비슷할 것 같음)

그 정지된 ID를 순차로 순회해서 아까 뽑은 list 에서 블럭여부 판단된 것으로 

 

list[list[id_list[i]][1][j]][4] === "block" 뭔가 이렇게 푸는게 맞나 싶긴한데 접근은 이렇게 된다

이 조건문에 해당하는 경우 result[i]++ 를 해주면

정지된 ID의 처리 결과가 순차로 쌓이게 됨

 

이제 중복 여부만 판단해주면 된다

 주어진 조건에 따라 한 유저가 같은 유저를 여러 번 신고한 경우는 신고 횟수 1회로 처리합니다. 

이건 그냥 아까 뽑아낸 list에서 

 

 

2가지 방법이 있을 것 같다

1. 신고 들어갈 때 거기서 중복 체크하기

2. 모든 list 데이터 처리가 끝난 후 거기서 [신고 한 사람]의 중복 데이터 제거하기

2가 편할 것 같은데 느리고 1은 귀찮을 것 같다

효율성체크 있어서 만약 떨어지면 1 방법을 써야할 것 같음

 

2의 방법은 많이 있어서

이런식으로 처리가 가능하지만

좀 전 list 에서 뽑아낸 블럭여부가 시점이 안맞는다

결국 1의 방법을 사용하려고 했지만 

그건 너무 귀찮으므로

한번 더 for문 돌리기

여기까지만 데이터 뽑고

이 함수 이름 너무 기니까 짧게 바꾸고 바깥으로 맨위로 빼버리고

removeDup(list); 한다음에

 

블럭여부를 좀 바꾼다 정리된 배열이 있으므로 본인을 신고한 사람의 length 로 판단

 

오 다행히 10초 효율성 안어기고 통과!

 

풀었는데 불안한 이 느낌은 뭐지

뭔가 야매느낌이..

728x90
반응형
LIST

'algorithm > 문제풀이' 카테고리의 다른 글

달리기 경주  (0) 2024.06.20
[PCCP 기출문제] 1번 / 붕대 감기  (0) 2024.06.20
연습문제 > 공원 산책  (0) 2024.06.19
개인정보 수집 유효기간  (0) 2024.06.12
연습문제 > 바탕화면 정리  (0) 2024.05.24