회고
하드코딩........
오늘도 의식의 흐름대로 이게 필요하니까 이거, 이게 필요하니까 이거 의식에 흐름에 따라서 코딩을 했다.
결과가 이런식으로 나와야하니까. 이렇게 라는 생각을 구현할 코딩 능력도 안되고, 그렇게 생각하는 것도 아직은 부족하다.
논리적으로 구현계획을 세우고서 문제를 푸는 연습을 해야겠다.
문제만 보면 일단 코드부터 치려고 하는 습관이 나쁘다고 생각은 할 수 없지만, 앞뒤 가리지 않고, 하나씩 확인해 가면서 결과를 보고 코딩을 구현하는 것은 논리적 사고를 방해한다고 생각한다.
그러다보니 문제를 푸는 시간도 길어지고, 풀고나서도 얻은 것 없이 문제하나 풀었다 라는 생각만 들 뿐이다.
신고검사 결과 받기
def solution(id_list, report, k):
# 신고하는 사람과 신고당한 사람이 겹치는 경우 1번만 횟수로 계산하기 때문에 set을 이용해서 중복을 제거해준다.
report = set(report)
# 신고당한 사람이 몇번 신고 당했는지를 딕셔너리 형태로 저장한다.
#{"김유신":2, "이순신":2, "홍길동":1,}
result = {}
for i in report:
if i.split()[1] in result.keys():
result[i.split()[1]] += 1
else:
result[i.split()[1]] = 1
# 신고당한 횟수의 누적이 k이상인 사람들을 딕셔너리 형태로 저장한다.
# k=2 이면 {"김유신":2, "이순신":2}
temp_list = []
for i in result:
if result[i] >= k:
temp_list.append(i)
# k이상인 사람을 신고한 사람이 누구인지 확인 하고, 그 사람의 신고횟수를 누적하는 코드를 딕셔너리 형태로 저장했다.
result = {}
for i in report:
if i.split()[1] in temp_list:
if i.split()[0] in result:
result[i.split()[0]] += 1
else:
result[i.split()[0]] = 1
# 마지막으로 id_list와 신고누적횟수를 매칭해서 리스트 형태로 변환한다.
answer = []
for i in id_list:
if i in result.keys():
answer.append(result[i])
else:
answer.append(0)
return answer