1.가장 먼 노드 일단 지금은 캠프교육중이라 시간이 없어서 이렇게 정리해놓는다. 시간 나면 나중에 그림으로 그려가면서 해봐라 이해 바로 된다. 1번 노드로 부터 가장 멀리 떨어져 있는 노드의 갯수를 구하면 된다. 구럼, n,vertex가 요런식으로 주어진다고 했을때 최종 리턴값은 3이다.( 4, 5, 6번 노드 ) 자 그럼 vertex를 그림으로 나타내 보겠다. 코드! pseudo code while안에서 que를 shift하면서 bfs방식으로 문제를 풀거다. 방문 여부와 1번 노드와의 거리를 측정하는 visited를 만듬. que에 일단 1번 노드를 push함. adjList 안에서 각 노드와 인접한 노드의 리스트를 만듬.
1. 접근방법 이중포문을 만들고 next x, next y를 만드는것은 이전의 재귀함수 섬나라랑 같다. 차이점은 queue를 만드는 것이다. queue안에다가 좌표를 넣고 해당이 되면 다음 좌표를 push한다. 그리고 다시 queue에서 좌표를 뽑아서 같은 방법을 진행한다. 끝남! 그럼 재귀와 반복문 중 누가 더 빠른지 performance를 비교해보자. 빠르기는 반복문이 더 빠르다.(실제 queue를 쓰면 더 빠르겠다.) 근데 가독성하고 공간복잡도는 재귀가 더 낫다.
1. 염소를 찾자 현재 나의 위치가 주어지고 염소의 위치가 주어졌다. 그리고 내가 한번에 갈 수 있는 거리가 주어진다. 이때 최소한의 움직임으로 염소까지 간다고 했을때 움직였던 횟수를 구하면 된다. 구체적 예를 들어 말해보자. 나의 위치: 5 염소위치: 14 한 번에 움직일 수 있는 거리: -1, 1, 5 이때 5에서 14까지 가는 최소과정은 이렇다 5 ->(-1) 4 ->(5) 9 ->(5) 14 따라서 3번만에 가므로 답은 3이다. 2. 접근 방법 queue를 이용해야한다. 5에서 갈 수 있는 경우를 children 으로 보고 계속 밑으로 뻗어가는 것이다. children을 queue에 더하고 그 앞에서 shift한다음 또 다시 children을 구하면 된다. Pseudo code result 와 queue 배열을 만든다 그리고 queue에 현재 위치를 push한다. 일종의 root를 생성하는 작업이다. queue에서 뽑아서 갈 수