전체 글

앞서 포스팅한 수 정렬하기2 문제를 풀면서 이해 안가는 부분이 있어 병합 정렬의 개념을 다시 한번 복기하고자 이 문제를 풀이해보았다.재귀를 활용한 Top down 방식으로 풀이하였다.문제   풀이 import java.util.Arrays;import java.util.Scanner;// 배열 A에 K 번째 저장되는 수를 구하는 문제public class BOJ24060 { static int[] arr, tmp; // 저장 횟수 누적 카운트 static int count = 0; // 결과 (실패 시 -1 출력) static int result = -1; // 저장 횟수 static int k; public static void main(String[] arg..
문제     문제 풀이  안일하게 Array.sort() 돌렸다가 시간초과가 났었다.검색해보니 Arrays.sort()는 dual pivot quicksort 알고리즘을 사용하기에 시간 초과가 난 것이라고 한다.dual-pivot Quicksort 알고리즘은 평균 시간복잡도가 O(nlogn) 이고, 최악의 경우 시간복잡도는 O(n2) 이기 때문에..N의 범위가 1,000,000까지로 꽤나 크다 보니 최악의 경우 시간복잡도가 O(nlogn)인 알고리즘을 활용해야 했다.힙 정렬과 병합 정렬이 해당하는데 병합 정렬을 적용하여 풀이하였다.       병합정렬 풀이 import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOExcept..
캡스톤, 기말 등 각종 이벤트들로 인해 그동안 백준을 많이 풀지 못하였는데 쉬운 것부터 다시 복습하고자 정리해보았다.이전 포스트와 같이 인접 행렬, 인접리스트, 그래프 형태로 풀이해보았다. 문제  문제를 통해 탐색을 시작할 정점의 번호가 1번부터 시작한다는 것을 알 수 있다.  입력 예제   문제 풀이 입력 예제를 참고하여 아래와 같이 그래프를 그리고, 그에 따른 인접리스트와 각 노드 별 연결 상태를 나타내는 행렬을 그려보았다.BFS 기준으로 탐색을 진행하였을 때에는 1, 2, 5, 3, 6의 순서로 이동하고, 이 때 바이러스에 걸리게 되는 컴퓨터의 수는 1번 컴퓨터를 제외한 4개이다. 이러한 연결 및 탐색 정보를 통해 BFS로 풀면 간단하게 풀리겠구나를 짐작하고 코드로 옮겨보았다.      인접 리스트..
· Error 정리
CoreML을 적용한 iOS 앱을 만들며 마주한 에러와 해결 방법을 정리해보려 한다.파이썬 프로젝트에서 keras 모델을 생성하여 Xcode에 모델을 추가하기 위해 변환하는 과정을 진행하고 있었는데coremltools 패키지를 이용하면 CoreML에서 쓰이는 형식인 .mlmodel로 변환이 가능하다.    추출된 mlmodel을 Xcode 프로젝트에 성공적으로 추가해주었다.  그리고 실행하여 이미지를 앨범에서 선택하여 분류를 시작하였는데 다음과 같은 에러가 떴다.  왜인지 검색해봤더니 모델의 입력 형식과 관련해서 설정이 되지 않아 나오는 에러인 듯 했다. 아무래도 모델을 추출하는 과정에서 설정이 잘못된 듯 하여 파이썬 코드를 다시 확인해보았다.  CoreML 모델로 변환 시 입력 텐서의 이름을 모델의 ..
DFS와 BFS의 기초를 다질 수 있는 문제로서 다양한 풀이 방법을 적용해보았다. 문제 입력 예제 문제 풀이 인접 리스트 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class BOJ1260 { static int n, m, v; static ArrayList[] arr; static boolean[] dfsVisited; static boolean[] bfsVisited; static String dfsOrder; static String bfsOrder; public static void main(String[] args) t..
· ETC
최근 C로 하는 과제들이 있어서 vi를 사용하는 시간이 꽤 많아졌는데, vim에서도 자동완성 플러그인들이 있는지 검색했다가 꽤 활용도가 높아보여 환경을 설정하게 되었다. 이러한 설정 과정들을 간략하게 정리해보려고 한다. https://github.com/VundleVim/Vundle.vim#about GitHub - VundleVim/Vundle.vim: Vundle, the plug-in manager for Vim Vundle, the plug-in manager for Vim. Contribute to VundleVim/Vundle.vim development by creating an account on GitHub. github.com https://github.com/ycm-core/YouCo..
문제 입력 예제 문제 풀이 입력 예제를 바탕으로 그래프화 해본 결과, 최단 경로를 구하는 방식이나 깊이 우선 탐색을 이용하는 방법으로 풀이가 가능하다는 생각이 들었다. DFS & BFS 둘 다로 풀이할 수 있는 문제이므로 두 알고리즘을 각각 적용하여 풀이해보기로 했다. BFS 위 그래프의 인접행렬과 노드 간 연결 관계(양방향)를 테이블로 표현해보았다. 추가) 아래 그림에서는 인접리스트라고 적었지만 구현은 인접행렬 방식으로 되어 있습니다. 인접행렬과 인접리스트의 차이가 궁금하다면 맨 아래 링크된 글을 참고 바랍니다. 방문 배열값 업데이트 과정은 다음과 같다. import java.util.*; public class BOJ2644 { static int n, m, start, end; static int[..
문제 소개 문제 요약 N개의 도시 인접한 두 도시 사이의 도로의 개수 N-1개 도로 이동 시 1km마다 1L의 기름을 사용 처음 출발 시 기름이 없으므로 첫번째 도시에서 기름을 넣고 출발해야 함 도시 당 하나의 주유소가 위치해있음 (리터당 가격이 다름) 왼쪽 도시에서 오른쪽 도시로 이동하는 데에 드는 최소 주유비용을 구하는 과정을 정리해보았다. 가격이 싼 도시의 주유소에서 많이 넣는 것이 주유비를 최소화할 수 있는 방법이나, 처음 출발 시에는 기름이 없으므로 무조건 첫 번째 도시에서 주유를 하고 가야한다. 다음 도시의 주유소를 이용하는 것이 불가하기 때문에 현재 선택지에서 최선의 선택을 하는 Greedy 알고리즘을 적용하는 것이 하나의 방법이 될 수 있는 것으로 보인다. 풀이 import java.uti..
빵판 AKA 브레드보드
BreadBoard's devlog