[프로그래머스lv.3] 순위

2021. 5. 4. 00:23·알고리즘 문제풀이

 

programmers.co.kr/learn/courses/30/lessons/49191

 

코딩테스트 연습 - 순위

5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2

programmers.co.kr

 

풀이

 

그래프를 그려본다.

 

그래프를 그려보고 경로가 다른 노드들과 모두 이어져 있는 노드를 찾는다. 

 

 4는 모든 녀석과 이어져 있다. 1은 3을 모르고 2는 6을 모르고 3은 1을 모르고 5는 3을 모르고 6은 2를 모른다.

여기서 4라는 모든 경로와 이어진 노드를 어떻게 찾을 수 있을까?

 

플로이드 와샬을 활용하면 된다.

플로이드 와샬은 모든 노드의 최단거리를 찾아준다.

그 점을 이용해서 노드가 이어져 있는지를 확인한다. 최단거리가 존재하지 않다면 경로가 없다는 것이다.

 

백준의 [2458번]키순서와 문제가 같다.

시간복잡도

 

플로이드 와샬의 시간복잡도와 같다. for문 3개를 중첩해서 사용하기에 O(n^3)이다.

 

 

코드

def solution(n, results):
    INF = 9873654321
    mat = [[0 if i==j else INF for i in range(n+1)] for j in range(n+1)]



    for result in results:
        a,b = result
        mat[a][b] = 1

    for k in range(1,n+1):
        for i in range(1,n+1):
            for j in range(1,n+1):
                if i==j:
                    mat[i][j] = 0
                else:
                    mat[i][j] = min(mat[i][j],mat[i][k] + mat[k][j])
    
    for i in mat:
        print(i)
    print()

    connect=[1]*(n+1)
    connect[0] = 0
    for i in range(1,n+1):
        for j in range(1,n+1):
            if mat[i][j] == INF and mat[j][i] == INF:
                connect[i] = 0
                connect[j] = 0
    
    return sum(connect)

 

'알고리즘 문제풀이' 카테고리의 다른 글

[프로그래머스lv.3] 정수 삼각형  (0) 2021.05.04
[프로그래머스lv3] [2020 카카오 인턴십] 보석 쇼핑  (0) 2021.05.04
[프로그래머스.lv3] 입국심사  (0) 2021.05.03
[백준2262] 토너먼트 만들기  (0) 2021.05.03
[백준1958] LCS 3  (0) 2021.05.03
'알고리즘 문제풀이' 카테고리의 다른 글
  • [프로그래머스lv.3] 정수 삼각형
  • [프로그래머스lv3] [2020 카카오 인턴십] 보석 쇼핑
  • [프로그래머스.lv3] 입국심사
  • [백준2262] 토너먼트 만들기
WildDevmon
WildDevmon
『앗! 야생의 개발몬(이)가 나타났다!』
  • WildDevmon
    야생의 개발몬
    WildDevmon
  • 전체
    오늘
    어제
    • 분류 전체보기 (35)
      • Server (5)
      • 알고리즘 문제풀이 (27)
      • 회고 (3)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준 1114 파이썬
    자바 프로세스 종료
    파이썬
    ai개발자
    통나무 자르기
    백준 1034
    백준1238
    백준 인형들
    다이렉트 버퍼
    백준1747
    커널 스레드 상태
    1114백준
    합승 택시 요금
    백준15954
    백준14465
    카카오 필요스펙
    백준 1027
    백준 어린 왕자
    백준 1004
    우아한 종료
    컴공 취준
    백준2262
    백준 10610
    preStop
    자바 스레드 상태
    백준 17281
    자바 물리 메모리
    terminationGracePeriodSeconds
    백준 램프
    경력 서류
    소수&팰린드롬
    백준 30
    백준1188
    자바 최대공약수
    자바 최소공배수
    백준 고층 건물
    2020 카카오 인턴
    백준 파티
    백준 경쟁적 전염
    graceful shutdown
    네이티브 메모리
    백준 1114
    소가 길을 건너간 이유 5
    백준 18405
    네카라쿠배 취업
    direct buffer
    백준6980
    백준 5347
    선발 명단
    코틀린 코루틴
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
WildDevmon
[프로그래머스lv.3] 순위
상단으로

티스토리툴바