Algorithm|Data Structure 4

어떤 숫자에 0부터 1사이의 랜덤한 값을 곱했을때

결과부터 말하자면 무조건 어떤 숫자보다 0.1이상 작은 값이 나온다 예를들어 20에 0부터 1사이의 랜덤한 값을 곱하면 무조건 최대값이 19.999999.....인 값 이하의 값들로 나온다 다른예로 30에 0부터 1사이의 랜덤한 값을 곲하면 무조건 최대값이 29.999999.....인 값 이하의 값들로 나온다. 왜냐하면 어떤 숫자에 숫자 1을 곱했을 경우는 자기 자신이 된다. 그 이상의 값을 곱해야지 어떤 숫자보다 높은 값이 나오기 시작한다. 때문에 당연히 숫자 1을 곱해야 비로소 자기 자신이 나오는데 그보다 작은(1보다 작은) 0부터 1사이의 숫자를 곱해주니 당연히 어떤 숫자(자기 자신)보다 작은 값들이 나오게 되는것. 아주아주 너무나도 당연하고 단순한 내용이지만 갑자기 훅 들어와서 생각해볼 때는 그 ..

자료구조와 알고리즘

우리가 무엇을 배우고자 한다면 일단 배우는 것이 무엇이고 그것을 배우는이유를 알아야 하는데 이는 배우고자하는 개념의 정확한 정의에서부서 시작한다. 하지만 항상 대부분의 책들과 여러 교육에서는 자료구조와 알고리즘을 항상 같이 엮어 가르치거나 뭉뜽그려서 설명하고 각각의 의미를 제대로 정의해 주는 경우는 드물었다. 이 두 개념은 다음 문장에서 정의 하는게 가장 정확하다고 생각한다. 자료구조 - 대량의 데이터를 효율적으로 관리하기 위한 구조 알고리즘 - 주어진 과제를 해결하기 위한 과정 또는 처리 절차 이렇게 정리가 되니 자료구조에 대해서 조금 더 열린 사고를 가지게 되었다. 기존에는 자료구조라 함은 배열, 리스트, 큐, 스택, 트리와 같이 단어 하나하나 외우는 듯이(?) 떠올렸거나 그냥 막연하게 뭔가 데이터가..

PS팁

*PS C++ 언어 작성시 Tip 1)컴퓨터는 보통 1초당 3억에서 5억번의 연산을 한다. N이 입력의 개수 일때 시간 복잡도 O(N)에 N을 대입 했을때 나오는 값이 연산의 횟수이다. ex)시간 복잡도 O(N)이 N일 경우 N(입력의 개수가)이 100만일때 100만번의 연산이 필요한 알고리즘 이라는 뜻이다. 2) 컴퓨터가 하는 연산의 개념은 뭔가를 행동하는 것이다 예를들어 변수 대입 및 복사 하거나 입력하거나 연산하거나 비교하거나 이 모든 행동들 하나하나가 하나의 연산으로 봐야한다 그러나 일반적으로 시간복잡도O(N)는 이렇게 세세하게 계산 하지 않고 입력값이 높아질 경우 실제 가장 많은 영향을 미칠 최고차항만을 의미한다 3) 공간 복잡도 512MB = 1.2억개의 int 변수 선언이라는 것 알아두자 4..

2진수

*2진수의 특징 1)2진수의 최상의 자리수의 값은 항상 그 전의 자리수 값들의 합보다 1이 더 크다 ->2배의 특성으로 처음에 1과 그다음 자리 2의 차이인 1의 값이 계속 유지된 결과이다 2)값을 표현하는 비트 들 중 최상위 비트를 MSB라 하는데 이 MSB가 1일 경우는 그 자리 비트수에 해당하는 값에 '음'의 부호를 가진다 0일 경우에는 그 자리 비트수에 아무런 값에 영향을 미치지 않으므로 아무런 의미가 없다 결국 MSB를 사용할 경우는 음의 부호를 사용하겠다는 말이다 양의 정수를 음의 정수로 변환 하는 방법은 결론만 말하자면 보수를 취해주고 1을 더해준다 이의 원리는 다음과 같다 지금 부터 설명을 8비트로 표현 하겠다 우리가 1을 8비트로 표현할 경우 00000001로 표현 한다 이를 음수로 표현..