■ Queue<T> 클래스의 Enqueue/Dequeue 메소드를 사용해 첫번째/마지막 값을 제외한 열거 가능형을 구하는 방법을 보여준다.
▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
#region 축소하기 - Shrink<TElement>(sourceEnumerable, fisrtSkipCount, lastSkipCount) /// <summary> /// 축소하기 /// </summary> /// <typeparam name="TElement">요소 타입</typeparam> /// <param name="sourceEnumerable">소스 열거 가능형</param> /// <param name="fisrtSkipCount">첫번째 제외 항목 수</param> /// <param name="lastSkipCount">마지막 제외 항목 수</param> /// <returns>축소 열거 가능형</returns> public IEnumerable<TElement> Shrink<TElement>(IEnumerable<TElement> sourceEnumerable, int fisrtSkipCount, int lastSkipCount) { int i = 0; Queue<TElement> queue = new Queue<TElement>(lastSkipCount + 1); foreach(TElement source in sourceEnumerable) { if(i >= fisrtSkipCount) { queue.Enqueue(source); if(queue.Count > lastSkipCount) { yield return queue.Dequeue(); } } else { i++; } } } #endregion #region 첫번째 값을 제외한 열거 가능형 구하기 - SkipLast<TElement>(sourceEnumerable, firstSkipCount) /// <summary> /// 마지막 값을 제외한 열거 가능형 구하기 /// </summary> /// <typeparam name="TElement">요소 타입</typeparam> /// <param name="sourceEnumerable">소스 열거 가능형</param> /// <param name="firstSkipCount">첫번째 제외 항목 수</param> /// <returns>첫번째 값을 제외한 열거 가능형</returns> public IEnumerable<TElement> SkipFirst<TElement>(IEnumerable<TElement> sourceEnumerable, int firstSkipCount = 1) { return Shrink(sourceEnumerable, firstSkipCount, 0); } #endregion #region 마지막 값을 제외한 열거 가능형 구하기 - SkipLast<TElement>(sourceEnumerable, lastSkipCount) /// <summary> /// 마지막 값을 제외한 열거 가능형 구하기 /// </summary> /// <typeparam name="TElement">요소 타입</typeparam> /// <param name="sourceEnumerable">소스 열거 가능형</param> /// <param name="lastSkipCount">마지막 제외 항목 수</param> /// <returns>마지막 값을 제외한 열거 가능형</returns> public IEnumerable<TElement> SkipLast<TElement>(IEnumerable<TElement> sourceEnumerable, int lastSkipCount = 1) { return Shrink(sourceEnumerable, 0, lastSkipCount); } #endregion |