Skip to content

2026/05/19

Choose a tag to compare

@terryanRLR terryanRLR released this 19 May 12:06
· 116 commits to main since this release
411aa17

20260519
TIL 겸 공부 일기

한 줄 평가: 라이브세션이 많다! 거기다 참여하고 다운받고, 계산하고, 연결하는 것이 많아서 이제 점점 실무에 가까워 진다는 느낌이다. 잘 마무리 짓도록 하자!

다음 날 목표: 내일은 과제다! 이를 위해 복습에 집중하도록 하자!


코드타카 74 번 - 신고 결과 받기

추론 1: 진짜 레벨 4 버겁구나.. 지금의 내 실력의 한계를 보인다는 느낌?

추론 2: 저번 문제 풀이 방식을 응용하면 되려나? 딕셔너리 지정하고, 각 변수별 점수 더하기?

추론 3: 그 후

추론 4:

샘플:

id_list = ["muzi", "frodo", "apeach", "neo"]
report = ["muzi frodo","apeach frodo","frodo neo","muzi neo","apeach muzi"]
k = 2
print(solution(id_list, report, k))

1차 시도:

def solution(id_list, report, k):
AAA = dict.fromkeys(id_list, 0)
BBB = []
CCC = dict.fromkeys(id_list, 0)
for i in range(len(report)):
for j in id_list:
if j in report[i]:
AAA[j] += 1
if AAA[j] >= k:
BBB.append(i)
for g in id_list:
if g in BBB:
CCC[g] += 1
return CCC

-> 으으.. 결국 나누어야 하나?

def solution(id_list, report, k):
report = list(set(report))
AAA = dict.fromkeys(id_list, 0)
BBB = []
CCC = dict.fromkeys(id_list, 0)
for r in report:
a, b = r.split() # a: 신고자, b: 피신고자
AAA[b] += 1
for j in id_list:
if AAA[j] >= k:
BBB.append(j)
for r in report:
a, b = r.split()
if b in BBB:
CCC[a] += 1
return list(CCC.values())

-> 의외로 쉽게 풀리긴 했네...

타인 풀이:

def solution(id_list, report, k):
answer = [0] * len(id_list)
reports = {x : 0 for x in id_list}

for r in set(report):
    reports[r.split()[1]] += 1

for r in set(report):
    if reports[r.split()[1]] >= k:
        answer[id_list.index(r.split()[0])] += 1

return answer

-> 비슷한데? 나 혹시 슬슬 일반화 되어가는 건가..?

타인 풀이2:

ef solution(id_list, report, k):
answer = [0] * len(id_list)
dic_report = {id: [] for id in id_list} # 해당 유저를 신고한 ID
for i in set(report):
i = i.split()
dic_report[i[1]].append(i[0])

for key, value in dic_report.items():
    if len(value) >= k:
        for j in value:
            answer[id_list.index(j)] += 1

return answer

-> 이것도 결국 같은 맥락이네...

===

아티클 스터디


더 나은 대시보드 디자인을 위한 10개명

대시보드 디자인은 요즘 많이 요구되는 과제임. 기업들은 모든 정보, 트렌드 시각화, 위험 요소 발굴, 실시간 피드백을 주는, 기업의 밝은 미래로 인도해줄 간단한 뷰를 선호함.

  1. 대시보드의 목적 정의

Operational dashboard - 분초를 다루는 임무를 하고 있는 사용자들에게 빠르게 중요한 정보를 전달하는 것.

Analytical Dashboard - 분석과 의사결정을 지을 수 있는 정보를 한눈에 보게 하고, 대신 시간에 예민하지 않으며 즉각적인 조치에 초점을 맞추지 않는 방법. 최우선 목표는 사용자들이 데이터를 더 쉽게 이해하고, 트렌드를 분석하며 의사결정을 짓게 하는 것.

  1. 정확한 데이터 시각화 선택

데이터의 관계를 쉽게 볼 수 있는 그래프 - 분산형, 버블, 네트워크 도표 등.

데이터값을 비교할 수 있는 그래프 - 막대, 라인 차트 등

전체를 구성요소를 비교할 수 있는 그래프 - 파이, 도넛 차트 같이 너무 많은 요소가 있거나 비슷한 수치가 있을 때 특히 비교하기 어려움.

분포를 비교할 수 있는 그래프 - 분포 차트

사용하지 말아야 할 그래프 - 게이지, 3D 차트 등

  1. 명확하고 일정한 네이밍과 날짜포멧, 그리고 큰값들의 축소화
    대시보드의 목적이 한눈에 보는 메시지이기에 작은 요소 하나하나 일관성 있게 작성

  2. 레이아웃과 흐름을 우선시로 정의.

그리드 - 적은 노력으로 효과적인 조정과 일관성을 유지하고, 간단한 구조를 만들고 디자인의 뼈대를 손쉽게 만듬.
시선 처리에 맞게 작성

  1. 일관성있는 형태의 구성요소를 사용
    반응형, 유동형, 확작성 등의 장점이 있음

  2. 여백은 두배로
    -> 가독성이 떨어질 수 있음

  3. 정보를 숨기지 말고 너무 인터랙션에 의지 X
    핵심 정보만 보이게 작성

  4. 주문제작보다 개인화
    확신을 가지고 그들에게 중요한 것을 확신 있게 보이기

  5. 테이블이나 리스트를 적용시, 인터랙티브한지 확인하고 정확히 나열되어있는지 확인 아니면 표로
    데이터 테이블은 큰 수치의 아이템들의 정보를 보여줄 때, 공간 효율성, 쉬운 확장성과 개발, 그리고 사용자 편리성 등에서 매우 유용함.

  6. 대시보드는 마지막에 디자인
    대시보드는 모든 것을 요약한 뷰이고, 다양한 앱의 핵심 정보를 보여주기 때문에 마지막에 디자인하는 것이 불필한 이중 작업을 방지할 수 있음.


인사이트: 아티클에 따르면, 대시보드 디자인은 요즘 범기업적으로 많이 요구되는 과제입니다. 기업들은 모든 정보들을 정리해서, 트렌드 시각화, 위험 요소 발굴, 실시간 피드백을 줄 수 있는 간단한 뷰를 선호한다고 나타나 있습니다.

다음 아티클은 더 나은 대시보드 디자인을 위해 10개의 규칙을 설명합니다. 이를 통해 사전에 대시보드의 목적을 올바르게 정의하고 구성을 시작하여, 이를 구성할 수 있는 데이터에 따른 올바른 시각화용 그래프를 추천합니다. 그 외에도 정확한 네이밍, 날짜나 숫자 등의 포맷, 레이아웃이나 여백 등의 다양한 최적화된 시각적 조언과, 어떤 정보들을 남겨야 하는지, 테이블을 어떻게 사용해야 하는 지등 다양한 대시보드를 구성하기 전 계획하고 구성하는 것 부터, 대시 보드 제작, 디자인 까지 다양한 인사이트를 제공합니다.

아티클 추천 이유: 지금 까지 배운 분석들을 정리하고 한눈에 정리해 나타낼 수 있는 대시보드를 학습하는 주간이기도 하고, 앞으로 과제나 프로젝트에 들어가면서 대시보드를 구성하는 데 앞으로 많은 고민이 있을 것 으로 판단되기에, 이 아티클을 통해 조금이나마 아이디어와 영감을 얻고, 방향성을 성립하는 것에 보템이 될 수 있을 것으로 생각 되어 이 아티클을 추천합니다. 앞으로도 대시 보드 구성이나 포트 폴리오 작성 전에 잠깐 살펴 보며 사전에 구성하고 설계하는게 도움이 될 것 입니다.