LSCS 구하기
LSCS는 Largest Sum of Contiguous Subarray의 약자로, 연속된 부분배열의 합들 중 가장 큰 합을 의미합니다. 연속된 부분 배열이란 예를 들어서 전체 배열이 {1, 2, 3} 인 경우에 {1}, {1,2}, {1,2,3}, {2}, {2,3}, {3} 과 같이 인접한 원소들로만 이루어진 집합을 의미합니다. 이 배열의 LSCS는 부분배열 {1,2,3}의 원소의 합인 6이 됩니다. 원소들이 0이상의 정수라면 단순히 모든 원소를 다 더하면 LSCS가 되겠지만, 음수가 포함되는 경우는 조금 다른 결과가 나올 것입니다. 위의 문제를 만났을 때 배열의 index를 포인터 삼아 포인터를 옮겨가며 모든 부분배열 원소의 합을 각자 구한 뒤, 그 중에서 가장 큰 값을 구하는 방법을 사용했습니다...
2022. 7. 28.
Bitwise Operator(비트 단위 연산자)
비트 단위 연산을 위한 연산자가 따로 존재한다. 먼저 비트는 이진수로 0 또는 1의 값을 갖는다. 비트 단위 연산이란 이진수의 각 비트 값을 연산하는 것을 의미한다. 위의 그림에 나온 이진수를 예로 들자면, 01010010 이라는 이진수의 각 비트마다 (0,1,0,1,0,0,1,0) 모종의 연산을 수행하는 것이다. Swift에는 NOT, AND, OR, XOR, Shift 연산자가 있다. (Java도 거의 동일한 것 같았다.) 1. NOT 연산자 (~) : 0과 1이 반대되는 수를 반환한다. (1의 보수에 해당한다.) ~0101 = 1010 이 되는 셈이다. 예를 들어서, 정수 5에 NOT 연산자를 사용하면 (~5) 이는 ~0101으로 인식이 된다. 그러면 0101에서 0과 1을 반전시킨 수인 1010이..
2022. 4. 15.