[프로그래머스] 42746 가장 큰 수(Lv.2) - 정렬
·
코딩 테스트/자료구조
문제numbers[]에 0 or 양의 정수가 주어졌을 때 정수를 이어 붙여서 만들 수 있는 가장 큰 수를 반환하라코드시도 1 - X처음엔 단순하게 내림차순 정렬한 후 String으로 변환하여 출력하는 코드를 작성했다.이 경우 [3, 30, 34]일 경우 34303이 되어 틀린 답이 나오게 된다./**1. numbers 배열에서 크기 순서대로 정렬한다.2. 정렬된 순서대로 이어 붙여 숫자를 만든다.3. 반환한다.**/import java.util.Arrays;class Solution { public String solution(int[] numbers) { Arrays.sort(numbers); StringBuilder sb = new StringBuilder(); ..
[프로그래머스] 42748 K번째수(Level.1) - 정렬
·
코딩 테스트/자료구조
문제코드시도 1 - Ocommands[][]의 행을 돌며 i ~ j 인덱스의 값들을 새로운 배열에 복사한 뒤 k번째 값을 result[] 배열에 삽입하여 반환한다./** 문제 설명배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수 구하기*/import java.util.*;class Solution { public int[] solution(int[] array, int[][] commands) { int[] result = new int[commands.length]; int s = 0; for (int[] command : commands) { int i = command[0]; i..
[백준] 9372 상근이의 여행(실버4) - 그래프
·
코딩 테스트/자료구조
문제코드이 문제는 그래프를 탐색할 필요 없이 그래프의 기본 개념만 알고 있다면 쉽게 풀 수 있는 문제이다.비행 스케줄을 항상 연결 그래프를 이룬다고 되어 있고 타야 하는 비행기의 종류를 구하라고 나와 있다. 이것을 그래프 용어로 바꾸어 설명하면 그래프는 연결 그래프이고 모든 노드를 지나는 간선의 최소 개수를 구하라는 뜻이고 간선의 최소 개수는 항상 N-1이므로(N: 노드의 수) N-1을 출력해주면 된다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class _9372 { public static void main(..
[프로그래머스] 49189 가장 먼 노드(Level3) - 그래프, BFS
·
코딩 테스트/자료구조
문제코드시도1 - 인접 행렬 구현 X백준 미로 탐색 문제(https://tojaman.tistory.com/81) - 그래프)의 풀이 방식에 최댓값의 개수를 구하는 코드를 추가하여 풀었다.솔직히 왜 틀린건지 모르겠다... 일단 넘어간다.import java.util.*;class Solution { int[][] graph; Queue q = new LinkedList(); boolean[][] visit; int[][] move; public int solution(int n, int[][] edge) { graph = new int[n+1][n+1]; visit = new boolean[n+1][n+1]; move = new int[n+..
[백준] 2178 미로 탐색(실버1) - 그래프
·
코딩 테스트/자료구조
문제풀이maze[][]Queue qvisit[][] / move[][]코드입력 값으로 2차원 배열 미로(maze[][])를 만든다.상하좌우를 탐색하여 값이 1이고 방문하지 않는 칸들을 찾아서 아래 작업을 수행한다.이동(큐에 삽입)이동한 칸을 방문 표시(visit[해당 칸] = true)이동한 칸의 이동 횟수 갱신(move[현재][현재] == move[이전][이전] + 1)상하좌우 모두 탐색을 완료했다면 큐의 맨 앞의 값을 가져와서(q.poll()) 2번 과정을 반복한다.모든 칸을 탐색했다면 [N, M] 칸의 최소 이동 횟수인 move[N][M]를 출력한다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamR..
[백준] 2606 바이러스(실버3) - 그래프(DFS)
·
코딩 테스트/자료구조
문제코드시도1 - 인접 행렬O이번 문제는 특정 노드에 연결된 노드들을 탐색하는 것이 핵심이다.인접 행렬과 인접 리스트 모두 가능한데 우선 인접 행렬을 이용하여 구현해봤다.2차원 배열로 정점간의 연결 유무를 구현한다.DFS를 이용하여 특정 정점(target)과 연결된 정점을 찾고 HashSet에 저장한다.연결된 정점이 HashSet에 존재하지 않다면 연결된 정점을 target으로 DFS를 실행한다.사실 DFS는 생각하지 못했고 재귀만 생각하고 풀었는데 풀고 살펴보니 DFS를 이용한 풀이였다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashSet;import ..