도넛과 막대 그래프
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 풀이
생성점: out만 2개 이상, in 0 (조건이 그래프 수 합 2 이상이므로)
막대그래프: out은 0, in 만 존재
8자 그래프: out, in 각각 2개 이상
도넛 그래프: 그 외 그래프의 수
def solution(edges):
answer = [0, 0, 0, 0]
inout = {}
for a, b in edges:
if not inout.get(a):
inout[a] = [0, 0]
if not inout.get(b):
inout[b] = [0, 0]
# [out, in] 카운팅
inout[a][0] += 1
inout[b][1] += 1
for key, cnt in inout.items():
# 생성점: out만 2개 이상, in 0 (조건이 그래프 수 합 2 이상이므로)
if cnt[0] >= 2 and cnt[1] == 0:
answer[0] = key
# 막대그래프: out은 0, in 만 존재
elif cnt[0] == 0 and cnt[1] > 0:
answer[2] += 1
# 8자 그래프: out, in 각각 2개 이상
elif cnt[0] >= 2 and cnt[1] >= 2:
answer[3] += 1
# 도넛 그래프: 전체 그래프 개수인 생성점의 out 수 - 다른 그래프 개수
answer[1] = (inout[answer[0]][0] - answer[2] - answer[3])
return answer
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스][백트래킹][그리디] 광물 캐기 (0) | 2024.04.18 |
|---|---|
| [프로그래머스][조합] 후보키 (0) | 2024.03.09 |
| [그리디] 마법의 엘리베이터 (0) | 2024.01.11 |
| [Union-Find][BFS] 전력망을 둘로 나누기 (1) | 2024.01.04 |
| [다익스트라][Heap] 배달 (1) | 2023.12.17 |