목록데이터 엔지니어링 정복/Algorithm (159)
지구정복
https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net -문제해설 스택에 1부터 n까지 오름차순으로 숫자를 집어넣으면서 push와 pop을 반복하여 입력받은 값들과 똑같이 만들면 되는 문제이다. 자바코드에서 첫 번째 풀이는 먼저 다 입력을 받고 하나하나 비교해나가는 풀이이고 두 번째 풀이는 다른 사람풀이를 참고하여 하나씩 입력받을 때마다 스택을 push, pop하는 코드..
https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net -문제해설 아직 이분탐색이 익숙하지가 않나보다. 한참 헤매다가 풀었다.. 처음 입력받을 때 가장 큰 값을 찾기위해서 입력값에 대해서 Math.max() 메소드로 최대값을 찾아주고 이분탐색을 위해 start = 0, end = max값으로 설정한다. 그리고 while의 조건으로 start가 end보다 작거나 같으면 반복되도록 한다. while문 안에서는 중간값을 찾기 위..
https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net -문제해설 어레이리스트를 이용해서 출력해야될 인덱스를 StringBuffer에 저장시키고 리스트에서 삭제시킨다. 이를 계속반복하면서 리스트가 비워지면 반복문을 빠져나오고 저장된 StringBuffer를 출력한다. 이때 인덱스값 설정할 때 조금 애먹었다.. idx를 인덱스변수라고 하면 처음에 0으로 선언한다. 그리고 idx + (k+1)에다가 리스트 크기로 나눈 나머지를 idx로 설정한다. ( idx + (k+1) ) % arr.size() arr.size()가 7이고 k가 2라고 ..
https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net -문제해설 자바로는 배열을 이용해서 풀었다. 이때 pop_front나 pop_back, push_front같은 경우 인덱스값을 잘 활용해서 배열의 값을 한 칸씩 미루거나 땡겨줘야 한다. 파이썬은 리스트 구조여서 push같은 경우 insert( 인덱스, 삽입값 ) 메소드를 잘 활용하면 되고 pop같은 경우 pop(인덱스)를 활용하면 쉽게 풀 수 있다. -자바 package dataS..