프로그래머스

    [Programmers] 여행 경로 - Java

    Level 3 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 문제 풀이 BFS도 나올 줄 알았는데.. 이것도 DFS ㅎ 이번 문제는 시작 지점이 인천으로 고정되어 있기 때문에 그 부분을 주의해서 초기 값을 넣어주고 마찬가지로 재귀함수를 돌려주면 된다. 티켓의 사용여부를 표시하기 위해 visited 리스트를 만들어주고 count 변수로 사용한 티켓 수를 확인할 수 있도록 해줬다. route를 저장하고 정렬하는 부분에서 헤매서 구글링을 했는데 정말,, 아직 난 갈길이 멀다. 문..

    [Programmers] 단어 변환 - Java

    Level 3 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 문제 풀이 DFS 문제 우선 문제에서 주어진 조건대로 철자 하나씩만 바꿔야하기 때문에 두개이상 달라지면 false를 반환하는 함수를 만들어줬다. 그리고 재귀함수에서 한개만 달라지는지 확인하고 그게 맞으면 방문처리하는 식으로 dfs를 구현했다. 몇 개의 단계를 거쳤는지 확인하기 위해 stage 변수를 만들고 target과 같게되면 바로 최소값과 비교해 저장한다. 여기서 주의해야 할 것은 그냥 "=="연산자로..

    [Programmers] 네트워크 - Java

    Level 3 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 문제 풀이 DFS 문제 자기자신을 방문처리하고, 연결된 노드이면서 방문하지 않은 노드의 인덱스를 다시 재귀함수의 매개변수로 주어 모든 연결된 노드들을 dfs로 방문한다. 재귀가 끝날 때마다 count(내 코드에선 answer변수)를 올려 네트워크의 개수를 센다. 코드 class Solution { public void dfs(int index, int[] visited, int[][] computers) { visited[index] = 1;..

    [Programmers] 타겟넘버 - Java

    Level 2 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 문제 풀이 DFS 문제 값을 빼고 재귀함수에 넣고, 값을 더해서 재귀함수에 넣어준다. n이 주어진 숫자의 개수와 같아지면 target과 같은지 확인하고 맞으면 개수+1을 해준다. 코드 class Solution { ..