목록알고리즘 (258)
라떼는말이야
www.notion.so/2-08f4db3264bc40a8b181d63ce8648141 2주차 ✔︎ 문제 1 www.notion.so ✔︎ 문제 여러분은 기존 오프라인에서 리테일 사업으로 유명한 신선식품 업체에 입사한 개발자 입니다. 최근 디지털 트랜스포메이션 이슈에 따라 기존 오프라인으로 운영하던 리테일 사업을 온라인으로 전환하게 되었습니다. 여러분에게는 기존 오프라인에서 일어나던 일들을 온라인 쇼핑몰로 전환하는 임무를 진행하게 됩니다. 성공적으로 첫 임무를 완수하여 팀장님의 신임을 얻고 성취감도 느껴보세요! 이제 입사한지 얼마 되지 않았기 때문에 간단한 재고 관리 프로그램 개발의 일부를 맡게 되었습니다. 주문이 들어왔을 때 재고량을 적절하게 관리하지 못 하면 재고가 없는 물품의 주문이 추가로 일어날 ..
CPU클럭 * CPU가 사용하는 레지스터 * 코어의 개수 CPU클럭: CPU가 초당 실행하는 작업 단계의 개수. 컴퓨터의 클럭이 2100Mhz라면, 2100M 단계를 수행할 수 있는 것입니다. CPU레지스터: 어떤 프로그램을 다운받을 때 64비트, 32비트에 따라 다른 파일을 다운받는 것을 본 적 있을 것입니다. 그때의 64비트, 32비트가 레지스터를 의미합니다. 만약 CPU가 64비트 레지스터를 지원한다면, 64비트 연산을 한 번에 처리할 수 있다는 뜻입니다. 코어: 컴퓨터가 4개의 코어를 가지고 있따면 CPU가 4개 있다는 뜻으로, 네 번에 한 CPU가 할 수 있는 연산을 한 번에 끝내버리는 것이 가능합니다. 하지만 항상 4개의 코어가 동시에 공정하게 일을 한다고 할 수 없습니다. CPU클럭 * CP..
모니터는 하나의 픽셀을 표현하기 위하여 RGBA 색 공간을 사용합니다. 대부분의 모니터는 하나의 픽셀을 표현하기 위하여 RGBA 색 공간을 사용합니다. 비트 수준이 8비트라는 이야기는, 각 색상을 표현하는 데에 8비트를 사용한다는 이야기입니다. 컴퓨터로 색상 작업을 하실 때, 이러한 창을 본 적이 있다면, 빨강의 정도를 0~255 사이의 숫자로 표현하고, 녹색, 파랑 또한 0~255 사이의 숫자로 표현하는 것을 경험한 적이 있을텐데, 이것이 8비트에서 나온 것입니다. 8비트가 표현할 수 있는 숫자의 개수는 2^8 = 256개이기 때문에, 0~255까지의 숫자로 표현할 수 있었던 것입니다. 모니터는 RGBA 색 공간을 사용한다고 했으니, 하나의 색깔 당 8비트씩 사용하여, 총 8^4비트를 사용하는 것입니다..
컴퓨터는 신호가 있으면 1, 신호가 없으면 0으로 설정하고 있습니다. 만약 더 높은 진법을 사용한다면 비용과 시간, 계산이 복잡해지고 데이터 처리 과정에서 처리 시간이 더 오래 걸리게 되므로 오류를 최소화하면서 가장 안정적으로 처리 가능한 2진수를 사용한다고 생각합니다. 또한, 컴퓨터를 구성하는 회로에서 데이터 노이즈가 발생하게 되는데 데이터 통신에서는 노이즈를 줄이는 게 중요합니다. 만약 10진수라면 2진수보다 노이즈가 더 클 것이기 때문에 가장 노이즈가 적은 2진수를 사용하고 있는 거죠 또 기술이 진보한 지금까지 2진수를 사용하고 있는 이유는 2진법을 기반으로 대부분의 컴퓨터 시스템 등이 표준화 되어 있기 때문에 2진법보다 더 나은 기술이 있어도 전면 대체할 만큼의 기술이 없고 시간이 오래 걸릴 것이..
문제 피보나치(Fibonacci) 수열의 각 항은 바로 앞의 항 두 개를 더한 것입니다. 1과 2로 시작하는 경우 이 수열은 아래와 같습니다. 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ... 4백만 이하의 짝수 값을 갖는 모든 피보나치 항을 더하면 얼마가 됩니까? 파이썬 a, b = 1, 2 total = 0 while a
문제 10보다 작은 자연수 중에서 3 또는 5의 배수는 3, 5, 6, 9 이고, 이것을 모두 더하면 23입니다. 1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면 얼마일까요? 파이썬 def sum_arithmetic(range_end, num): n = (range_end - 1)//num return n*(n+1)*num/2 print(sum_arithmetic(1000, 3) + sum_arithmetic(1000, 5) - sum_arithmetic(1000, 15)) 정답 233168 해설
※ 본 게시글은 모듈러 연산에 대해서 알고 있다는 전제하에 진행한다. 페르마의 작은 정리 (Fermat's little theorem) 페르마의 작은 정리에서 암호기술에 많이 응용되는 분야는 유한체에서의 역원 계산이다. 즉, 정수 a의 역원을 계산하는 방법으로 활용된다. 위 정의를 살짝 변형하면 다음과 같이 표현할 수 있다. 위 식을 잘 보면 a의 곱셈에 대한 역원을 생각해 볼 수 있다. 그 식은 다음과 같다. a의 역원은 a ^ (p-2) mod p이다. 이처럼 나타낼 수 있는 상황은 p가 소수일 경우에만 가능하다. 예제 1 위의 예제에서 3의 201 제곱에서 201은 10 x 20 +1로 표현할 수 있다. (3^10)^20 x 3에서 3^10은 mod11을 취했을 때 페르마의 작은 정리에 의해서 1이..
유클리드 알고리즘 (Euclidean algorithm) 두 정수 사이의 최대공약수(GCD, Greatest Common Divisor)를 구하는 알고리즘이다. 유클리드 알고리즘의 동작 두 정수 a, b가 있을 때 r은 a ÷ b의 나머지로 정의한다. 즉, r = a % b이다. (a > b로 가정) 위 프로세스와 같이 나머지가 0이 될 때까지 두 번째 인자 값을 첫 번째 인자 값에 넣고, 나머지를 두 번째 인자 값에 넣는다. 예시 Q1. 2740과 1760의 최대공약수 계산 2740과 1760의 최대 공약수는 20이다. Q2. 25와 60의 최대공약수 계산 25와 60의 최대공약수는 5이다. 위 예제에서는 r1과 r2 중 어느 쪽이 커도 상관 없다는 것을 보여준다. 구현 gcd = lambda a, b..