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초 효율성 안어기고 통과!
풀었는데 불안한 이 느낌은 뭐지
뭔가 야매느낌이..
'algorithm > 문제풀이' 카테고리의 다른 글
달리기 경주 (0) | 2024.06.20 |
---|---|
[PCCP 기출문제] 1번 / 붕대 감기 (0) | 2024.06.20 |
연습문제 > 공원 산책 (0) | 2024.06.19 |
개인정보 수집 유효기간 (0) | 2024.06.12 |
연습문제 > 바탕화면 정리 (0) | 2024.05.24 |