목록데이터 엔지니어링 정복/Algorithm (159)
지구정복
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net -문제해설 큐를 이용해서 쉽게 풀 수 있었다. 먼저 1부터 입력값인 n까지 큐에 삽입한다. 그러면 아래와 같이 큐에 쌓인다. 6 5 4 3 2 1 이제 조건이 큐 사이즈가 1 초과일 때만 실행되는 반복문 안에서 첫 번째 큐값을 뺀다. 그리고 두 번째 큐값을 빼고 tmp 변수에 저장한 뒤 큐에 tmp를 다시 삽입한다. 이를 반복하다가 큐 사이즈가 1이되면 반복문을 빠져나오고 큐 안에 하나남은 값을 ..
https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net -문제해설 반례를 못찾다가 질문검색 10페이지까지 가면서 하나 찾아서 간신히 풀었다...ㅠ 그리고 이 글을 참고하면 좋을 것 같다. https://www.acmicpc.net/board/view/40713 먼저 배열로 받은 다음 Arrays.sort를 사용할 수 있겠지만 왠지 시간이 오래 걸릴 것 같아서 입력값을 arr배열의 인덱스로 넣고 최빈값을 구하기 위해 arr[인덱스] +=1 을 해주었다. 이때 -400..
https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net -문제해설 기본적인 이분탐색 문제로 주어진 배열에서 찾으려는 값이 있는지 탐색하는 문제이다. 찾으려는 값을 target = 1이라고 하고 주어진 배열을 arr = {1, 2, 3, 4, 5}라고 하자. 주어진 배열 arr 에서 첫 번째 인덱스를 start, 끝 인덱스를 end로 하고 중간 인덱스인 (start+end)/2 = 2를 mid로 선언한다...
https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net -문제해설 이전에 포스팅했던 좌표정렬하기와 아주 유사한 문제이다. 이번에는 y좌표 오름차순 정렬하되 같은 y값인 경우 x좌표를 오름차순으로 정렬하는 문제이다. 이번에는 자바와 파이썬 둘 다 sort함수의 익명함수를 이용해서 풀어봤다. -자바 package sort; import java.awt.Point; import java.io.Buff..