문제 https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 풀이 O(nlogn) 안에 풀어야 하는 문제이다. nlogn으로 풀어야 하기에 이진 탐색을 추가했다. 가장 먼저 수열이 담긴 배열을 seq이라 하고, dp 배열을 만들어주는데 dp[i]의 경우에는 i의 길이의 증가하는 수열의 가장 끝의 값이 담겨있다. 코드 import java.io.BufferedReader import java.io.BufferedWriter import java.io...
문제 https://www.acmicpc.net/problem/2473 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 풀이 투 포인터 문제입니다. 3개의 용액의 합의 절대값이 0과 가장 가까운 3개의 용액을 찾는 문제입니다. 3개의 용액을 구하기 위해, 기준이 되는 용액을 하나를 고정하고, 두 용액을 투포인터를 통해 포인터를 이동하며, 최적의 합을 찾는 것이 핵심입니다. for문을 통해 모든 용액을 기준으로 합니다. 이 때 for문의 범위를 전범위로 하는 것이 아니라, 두가지 용액이 더..
문제 https://www.acmicpc.net/problem/4386 4386번: 별자리 만들기 도현이는 우주의 신이다. 이제 도현이는 아무렇게나 널브러져 있는 n개의 별들을 이어서 별자리를 하나 만들 것이다. 별자리의 조건은 다음과 같다. 별자리를 이루는 선은 서로 다른 두 별을 일 www.acmicpc.net 풀이 문제의 조건을 보면, 별자리를 이루는 선은 서로 다른 두 별을 일직선으로 이은 형태이다. 모든 별들은 별자리 위의 선을 통해 서로 직/간접적으로 이어져 있어야 한다. 두 가지 조건이 있습니다. 두번째 조건을 보면, 최소 신장 트리를 찾아내야 하는 문제입니다. 그리고 가중치의 경우에는 첫번째 조건을 통해 알 수 있습니다. 곧 두 별 사이의 거리가 가중치입니다. 최소 신장 트리를 구하는 방법..
개요 이전 학습에서 http를 이용하여 비동기 API 통신을 했다. Future도 간단하게 공부를 하였는데, 결국 API 통신은 즉각적으로 바로 결과가 오는게 아니라, 상황에 응답 속도가 다르다. 그렇기에 일반적으로 로딩화면을 통해 데이터를 가져오고 있다는 것을 사용자에게 보여준다. 그렇다면 데이터가 도착하지 않았을 때는 로딩화면이 돌고 정상적으로 데이터 도착이 완료가 되었을 때 데이터를 보여주기 위해서는 어떻게 해야할까? 바로 Future Builder이다. child: FutureBuilder( future: webtoons, builder: (context, snapshot) { if (snapshot.hasData) { return const Text("There is data!"); } retu..
개요 개발을 하다보면, http를 이용하여 api를 호출해야 하는 경우가 있다. Flutter에서는 Http를 이용해 호출할 수 있다. 설치 pub.dev 에서 http를 검색하면, 설치 방법과 최신 버전을 확인할 수 있다. https://pub.dev/packages/http http | Dart Package A composable, multi-platform, Future-based API for HTTP requests. pub.dev 아래의 두 가지 방법 중 원하는 방법을 선택하여 설치해주면 된다. Flutter : flutter pub add http pubspec.yaml dependencies: http: ^1.1.0 사용 사용을 위해 import를 해주어야 한다. import 'packa..
문제 https://www.acmicpc.net/status?user_id=smc3843&problem_id=9466&from_mine=1 채점 현황 www.acmicpc.net 풀이 dfs를 이용해 방문한 학생이 아니면 다음 학생으로 이동한다. 이미 방문한 학생이면, 사이클이 형성되었다는 뜻이다. 하지만, 이미 사이클이 형성이 되어 조를 이루었다면, 이미 계산한 값이므로 조를 이루지 않는 경우에만 전체 학생수에서 사이클 수 만큼 반복하여 제거해준다. 결국 구하는 정답이 팀을 이루지 못한 학생이므로, 초기 ans 값을 학생 수로 설정하여 팀을 이룬 학생을 빼주면 된다. 코드 import java.io.BufferedReader import java.io.BufferedWriter import java.i..