[인프런] 역수열
문제설명 1부터 n까지의 수를 한 번씩만 사용하여 이루어진 수열이 있을 때, 1부터 n까지 각각의 수 앞에 놓여 있는 자신보다 큰 수들의 개수를 수열로 표현한 것을 역수열이라고 한다. 예를 들어, 다음과 같은 수열이 있다고 가정하자. [4, 8, 6, 2, 5, 1, 3, 7] 이 때, 1 앞에 놓여있으면서 1보다 큰 수는 4,8,6,2,5로 5개이고, 2 앞에 놓여있으면서 2보다 큰 수는 4,8,6 이렇게 3개, 3 앞에 놓여있으면서 3보다 큰 수는 4,8,6,5 총 4개이다. 따라서 [4, 8, 6, 2, 5, 1, 3, 7] 의 역수열은 [5, 3, 4, 0, 2, 1, 1, 0]이 된다. n과 1부터 n까지의 수를 사용하여 이루어진 수열의 역수열이 주어질 때, 원래의 수열을 출력하라. 입력조건 첫..
[BOJ] 2003번 - 수들의 합 2
문제설명 https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 사고과정 이중 for 문을 구현하면 시간초과 판정이 나기에 투 포인터를 활용해야 했다.(왼쪽 포인터, 오른쪽 포인터 하나씩) 부분 수열의 합이 m보다 작을때, 같을 때, 클 때를 나누어서 처리해주어야 한다. 작을 때는 오른쪽 포인터를 하나씩 늘려가면서 합을 갱신해주면 되고 크거나 같을 때는 왼쪽 포인터에 있는 값을 합에서 빼주고 왼쪽 포인터 인덱스..