CS 94

백준 14476 최대공약수 하나 빼기 python

최대공약수 뺴기 누적합 문제 해결 1. 왼쪽부터 차례로 누적 최대공약수를 구합니다. 2. 오른쪽부터 차례로 누적 최대공약수를 구합니다. [8, 12, 24, 36, 48] 예를 들어 index 0의 8이 빠지면 right_prefix_list[1]이 최대 공약수 입니다. index 1이 빠지면 left_prefix_list[1 - 1]과 right_prefix_list[1 + 1]의 최대 공약수가 전체의 최대 공약수입니다. 이 아이디어를 바탕으로 문제를 해결할 수 있습니다. 문제 오류 12는 빠진 수 8의 약수가 아니기 때문에 정답이 될 수 있다. -> 12는 8로 나누어 떨어지지 않기 때문에 정답이 될 수 있다. 예외 케이스 24는 8의 약수가 아니지만, 이것이 반례가 됩니다. 88%에서 막힌 이유 정..

CS/알고리즘 2024.04.03

[네트워크] DNS를 통한 IP 주소 확인 과정

DNS 서버의 기본 동작은 클라이언트에서 조회 메시지를 받고 조회의 내용에 응답하는 형태로 정보를 회답하는 일입니다. 그렇다면 조회 메세지에 포함된 정보는 무엇일까요? 그리고 DNS를 통해 IP주소를 어떻게 확인할 수 있을까요? 조회 메시지에 포함된 정보 (a) 이름 서버나 메일 배송 목적지(메일 주소에서 @뒷부분의 이름)와 같은 이름입니다. (b) 클래스 DNS의 구조를 고안했을 때 인터넷 이외에도 네트워크에서의 이용까지 검토하여 이것을 식별하기 위해 클래스라는 정보를 준비합니다. 그러나 지금은 인터넷 이외의 네트워크가 소멸되어서 클래스는 항상 인터넷을 나타내는 ‘IN’이 됩니다. (c) 타입 이름에 어떤 타입(종류)의 정보가 지원되는지를 나타냅니다. 예를 들어 타입이 A이면 이름에 IP 주소가 지원되..

CS/네트워크 2023.01.09

[네트워크] 네트워크 통신 과정 기초

이번 시간에는 네트워크 통신과정의 기초부분과 HTTP 리퀘스트 및 도메인 동작과정에 대해 이야기해보는 시간을 갖도록 하겠습니다. 네트워크 통신 - 간단한 과정 1. 웹 브라우저가 메시지를 만든다. 2. TCP/IP의 데이터를 전기 신호로 만들어서 보낸다. 3. 전기 신호가 케이블의 LAN을 통해 이동한다. 4. 액세스 회선을 통해 인터넷 내부로 접근한다. 5. 서버측의 LAN으로 접근한다. 6. 전기 신호가 웹 서버에 도착하여 응답 데이터가 웹 브라우저로 돌아간다. 네트워크 통신 - HTTP 리퀘스트 브라우저는 웹 서버에 보내는 리퀘스트 메시지를 작성하기 위해 URL을 해독합니다. URL을 해독하고 나면 브라우저는 HTTP 프로토콜을 사용하여 웹 서버에 액세스합니다. URL이 "무엇을"에 해당한다면 HT..

CS/네트워크 2023.01.04

[네트워크] 쿠키와 세션 정리

웹페이지를 이동할 때마다, 매번 사용자인지를 확인하기 위해 로그인 절차를 진행하는 것은 매우 불편한 일 입니다. 이를 해결하기 위해 어떤 사용자인지를 확인하는 방법으로 쿠키와 세션을 사용하는데, 이 둘의 차이점에 대해 알아보겠습니다. 네트워크 - 쿠키 1. 개념 사용자가 웹사이트를 접속하면 사용자의 브라우저에 저장되는 파일입니다. 2. 동작 순서 1) 클라이언트가 페이지를 요청합니다.(로그인) 2) 웹 서버에서는 쿠키에 정보를 담아 생성합니다. 3) 응답에 쿠키를 담아 클라이언트에 전송합니다. 4) 쿠키는 클라이언트가 가지고 있닫가 서버에 요청할 때 쿠키를 전송합니다. 5) 웹 서버는 쿠키를 바탕으로 사용자를 체크합니다. (로그인을 여러번 할 필요가 없음) 3. 쿠키의 보안 문제 1) 쿠키 값은 임의로 ..

CS/네트워크 2022.10.21

[컴퓨터구조] 하드웨어의 덧셈과 뺄셈 오버플로우

컴퓨터는 ALU에서 연산을 수행합니다. 그렇다면 컴퓨터는 어떻게 연산을 수행할 수 있을까요? 오버플로우가 발생하는지는 어떻게 알 수 있을까요? 구체적으로 알아보겠습니다. 정수의 덧셈 먼저 컴퓨터는 이진수를 사용합니다. 4비트로 표현할 수 있다고 가정할 때 정수의 덧셈을 확인해보겠습니다. 3+4 = 7 입니다. 이는 이진수로 표현하면 0011(2) + 0100(2)입니다. 이를 이진수 연산을 통해 각 자리 수를 더해주면 0111(2) = 7이라는 결과가 나옵니다. 정수의 뺄셈 -3 + 3 = 0입니다. 이를 이진수로 표현하면 1101(2) + 0011(2) = 0입니다. 4비트를 넘어가는 수는 버리기 때문입니다. 정수의 덧셈,뺄셈 오버플로우 앞서 덧셈과 뺄셈은 간단한 연산이므로 넘어가고 오버플로우가 발생하..

CS/컴퓨터구조 2022.10.14

3NF 와 BCNF의 차이점 정리

정규화에는 1정규화, 2정규화,... 5정규화가 있습니다. 그 중 3 정규화는 3NF라고 하는데, 이와 유사한 BCNF가 있습니다. 이 둘의 개념은 구분하기 어렵고 따라서 이번 포스팅에서는 이 둘을 상세히 비교해보려고 합니다. 3NF 3정규화 1. 개념 제 2정규화를 만족하는 동시에 prime attribute가 아닌 속성들이 Primary key에 dependent하거나, 참조당하는 속성이 prime attribute이어야 합니다. 잘 이해가 안되므로 아래의 예시를 통해 설명하겠습니다. Definition of 3NF: X -> A (a) X is a superkey of R or (b) A is a prime attribute of R * prime attribute는 키를 구성하는 attribute..

[컴퓨터구조] 명령어의 주소 지정 방식

명령어의 피연산자필드를 사용해, 데이터 유효주소를 결정하는 방식입니다. 0단계 주소지정방식 유효주소를 확정하기 위해 연산을 0번 수행합니다. 1) 즉시 주소지정 방식 명령어 피연산자 필드에 실제 데이터가 포함됩니다. 명령어 decode 시에 사용할 데이터가 바로 인출됩니다. 보통 프로그램의 초기 환경값을 세팅할 때 자주 사용됩니다. 장점: 레지스터 액세스조차 없이 수행됩니다. 단점: 피연산자에 해당하는 bit수로 표현할 수 있는 데이터만 제한적으로 사용 가능합니다. 2) 묵시적 주소지정 방식 명령어 실행에 필요한 데이터의 위치가 묵시적으로 지정됩니다. 스택이나 누산기처럼 저장할 위치가 이미 저장되어있는 경우에 해당합니다. 장점: 명령어의 길이가 짧고, cpu 내에서 연산이 수행됩니다. 단점: 컴퓨터 구조..

CS/컴퓨터구조 2022.10.12

[컴퓨터구조] 명령어 집합 분류

명령어 집합은 피연산자의 수에 따라 나뉘기도 합니다. 또한 피연산자의 수에 따라 컴퓨터 구조도 달라집니다. 스택, 누산기, 범용 레지스터 컴퓨터로 구분할 수 있는데, 각각은 명령어를 실행할 때의 트래픽 byte수가 다릅니다. 이번 포스팅에서는 이 세가지를 상세히 비교하며 이해해보도록 하겠습니다. 피연산자의 수와 명령어 집합 1. 명령어 구성 연산 부호(opcode): 어떤 연산을 수행할 것인가 피연산자(operand): 연산의 대상이 되는 데이터들의 위치 또는 값의 정보 2. 피연산자 수에 따른 컴퓨터 구조 종류 1) 스택 컴퓨터 2) 누산기 컴퓨터 3) 범용 레지스터 컴퓨터 3. 컴퓨터 성능에 영향을 미치는 cpu-M 병목 트래픽 명령어 인출: 7 * 5byte = 35 byte 데이터 전송: mul/..

CS/컴퓨터구조 2022.10.10

[컴퓨터구조] 컴퓨터 시스템

컴퓨터 시스템은 사용자가 원하는 작업 내용을 포함하는 소프트웨어와 작업을 수행하기 위한 하드웨어로 구성된 시스템입니다. 컴퓨터 시스템은 어떤 요소로 이루어지는지 어떤 기능을 수행하는지 알아보겠습니다. 컴퓨터 시스템의 개념적 구성 컴퓨터 시스템은 일반적으로 하드웨어와 소프트웨어로 구성됩니다. 하드웨어는 시스템을 구성하는 물리적 부품으로 이루어진 전자 기기를 의미합니다. 소프트웨어는 명령어로 구성된 프로그램과 프로그램 수행에 필요한 절차, 문서 등을 포함합니다.(넓은 의미) 소프트웨어에는 프로그램이라는 개념이 있습니다. 프로그램은 컴퓨터가 일을 처리하기 위해 컴퓨터가 이해할 수 있는 언어로 작성된 명령어들의 집합입니다. 추가적으로 펌웨어라는 것이 있습니다. 펌웨어는 하드웨어를 제어하기 위한 것으로 하드웨어와..

CS/컴퓨터구조 2022.10.07

[컴퓨터구조] 명령어 집합

어떤 프로그램과 그 프로그램을 수행할 컴퓨터 하드웨어 사이의 인터페이스에 대한 완전한 정의 혹은 명세를 ISA(명령어 집합 구조) 라고 합니다. 명령어를 만들 때는 다양한 특성을 고려해야 하는데, 거기엔 형태, 피연산자 수, 명령어 길이, 각 필드 길이 등 다양한 특성이 있습니다. 명령어의 특성 1. 형태 명령어는 특성에 맞는 형태(서식) 정의가 필요합니다. 따라서 명령어의 형태에 영향을 미치는 요인들을 고려해야합니다. 2. 피연산자수 명령어는 피연산자의 수에 따라 달라집니다. z = f(x, y) # 두 변수 x,y를 연산한 후 결과값 z를 생성하는 함수 f를 의미한다. f: 명령어(연산 부호, opcode) x, y, z : 피연산자(operand)로서, 데이터 위치(레지스터/ 메모리 주소)나 값을 ..

CS/컴퓨터구조 2022.10.06
728x90