Computer Science

    프로그래머스 level 3- 네트워크

    https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr #Idea : 주로 dfs는 인접그래프로 많이 문제를 풀었는데, 배열로 풀어야 해서 살짝 헷갈리는 부분이 있었다. 그렇지만 별다를 것 없이 각 index를 edge로 생각해서 한 노드부터 아직 방문한 적이 없고 인접한 노드로 dfs를 해나가면 그 노드와 연결되어있는 연결 성분을 찾을 수 있다. 그리고 이전 시작 노드와 연결되어있지 않아 아직 방문되지 않은 ..

    프로그래머스 level 3- 가장 먼 노드

    https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr #Idea BFS의 가장 기본 개념을 묻는 문제이다. 시작 노드에서 level 별로 노드들을 탐색하고, 가장 깊이 있는 노드의 개수를 세면 된다. 이미 지난 정점만 visited list를 이용해 잘 체크해주면 아주 쉬운 문제이다. +) Queue를 사용하는 BFS 기본 개념은 아래 포스팅 참고 https://mslilsunshine.tistory.com/135 그래프와 관련 알고리즘(DFS,BFS) 1. Graph란? : 일련의 ..

    프로그래머스 level 2- 타겟 넘버

    https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr # Idea 주어진 배열 numbers는 순서대로 더하거나 빼야하고, 이 과정을 그려보면 Tree로 표현됨을 알 수 있다. : (Edge를 +or - 로 표현하고, 각 노드들을 결과 값으로 표현한다) 따라서 Tree를 끝까지 순회해서 결과가 Target과 같은 경우의 수를 구하면 되며, 이는 DFS로 풀릴 수..