진짜 개발자
본문 바로가기

분류 전체보기 (총 582개)

자료구조 - 큐(Queue)란? Queue란 Queue란- 큐는 한쪽 끝(rear)에서는 삽입연산만 이루어지며 다른 한쪽 끝(front)에서는 삭제연산만 이루어지는 유한 순서 리스트이다. 특성- 구조상 먼저 삽입된 item이 먼저 삭제가 이루어진다. (FIFO) 큐의 표현1. 순차 표현- 1차원 배열을 이용한 순차표현이다.- 인덱스를 값으로 가지는 front, rear 라는 두개의 변수와 큐의 사이즈를 나타내는 n이라는 변수를 사용한다.- front, rear를 -1로 초기화 하여 큐가 empty임을 나타낸다. (front == rear일 때 큐는 공백)- rear에서 삽입 되므로 rear가 점차 증가하여 rear==n-1인 경우 큐는 full상태이다. 문제점- 큐에 삽입이 되며 점차 rear가 증가하게 되면 결국 full상태가 된다...
알고리즘 - 그리디01 그리디(Greedy) 알고리즘이란? 그리디(Greedy) 알고리즘 이란- 그리디(Greedy) 알고리즘이란 탐욕알고리즘이란 뜻으로 각 단계에서 최선책만을 선택하며 다음단계로 진행하는 알고리즘을 말한다. - 최적의 해를 구하는 알고리즘은 아니다 최적의 해의 근사의 해를 구하는 알고리즘이다.- 동적프로그래밍이 지나치게 많은 일을 하는 것에서 착안하여 고안된 알고리즘이며 동적프로그래밍을 대체하는 것은 아니고 서로 보완하며 사용되는 알고리즘이다.- 각 단계에서 최선책만을 선택하기 때문에 현재의 선택에 의해 다음 단계의 조건이 변하는 경우에는 부적합한 알고리즘이다. 최적의 해가 아닌 이유?- 그리디 알고리즘은 당장 선택할 수 있는 경우중 최선의 선택을 하기 때문이다. 예를 들어 지금 당장 금을 팔면 1돈에 10000원인데 내일은 1돈에 12000원..
자료구조 - Array(배열과) List 비교 Array(배열) 과 List의 차이점 Array(배열) 과 List의 차이점Array? - 다수의 데이터를 그룹핑해서 효율적으로 관리 가능한 자료형으로 데이터에 접근하기 위한 인덱스가 존재한다.장점- 인덱스를 통해 데이터를 가져오기 때문에 조회 속도가 빠르다.단점- 인덱스를 통해 데이터를 가져온다 즉, 데이터의 위치가 인덱스와 맵핑되어 고정된다. 추후 데이터가 삭제되는 경우 배열의 빈부분의 메모리가 낭비된다.- 위의 이유로 배열의 해당 인덱스에 데이터가 존재하는지 파악하는 로직이 추가적으로 필요하다. List? - 배열이 가진 인덱스의 장점을 버리고 대신 빈틈없이 데이터를 적재하는 장점을 취한 자료형. - 순서가 있으며 중복이 허용되는 자료형. 간단한 이해Array(배열) - 주민등록번호와 비교하면 된..
운영체제 - 프로세스 동기화란? 프로세스 동기화 프로세스 동기화프로세스 동기화란하나의 자원을 한 순간에 하나의 프로세스만이 이용하도록 제어하는 것 스레드 동기화란하나의 코드블록 또는 메소드를 한순간에 하나의 스레드만이 이용하도록 보장하는 것 동기화가 없다면- 데이터 일관성이 깨짐 => 즉, 한 순간 하나의 데이터의 값이 여러개일 수도 있게 됨, 다시 말해 여러개의 스레드가 하나의 변수에 대한 값이 제각각일 수 있게 됨. 배경협력적 프로세스는 시스템 내에서 실행중인 다른 프로세스의 실행에 영향을 주거나 받는 프로세스 이다. 협력적 프로세스는 논리 주소 공간(코드, 또는 데이터)를 직접 공유 하거나 파일 또는 메시지에 의해서 공유가 이루어진다 전자의 방법을 통해 논리 주소 공간을 공유하는 것은 스레드(Thread)를 통해 달성할 수 있다...
Python - Selenium으로 웹 크롤러 만들기 Selenium으로 웹크롤러 만들기 Selenium으로 웹크롤러 만들기 목표selenium을 이용하여 크롤링을 통해 각 상품별 세부 사항을 엑셀에 저장한다. (Beautifulsoup을 이용하여 시도해보았으나 여러가지 문제점에 의해 Selenium을 선택했다. 동적 페이지 크롤링의 어려움, 웹페이지를 조작하기 어려움 등) 목표 세부설명https://www.sigmaaldrich.com URL로 이동해 상품을 검색한다. 검색 결과로 나타난 상품을 클릭해 세부사항을 확인한다.아래 그림의 빨간 네모칸에 해당하는 사항들을 크롤링한다.크롤링의 결과로 출력된 데이터를 정리하여 Excel에 저장한다. 과정1. URL 파악하기 https://www.sigmaaldrich.com/ 로 접속한 뒤 C:/test/produ..
Test - TDD(테스트 주도 개발방법론)이란? TDD란 TDD(테스트 주도 개발론)이란? 배경 흔한 기존의 개발 방법은 위 그림과 같다. 요구사항에 따라 기능을 구현한 뒤 콘솔에 표시되는 값을 통해 간단히 확인을 한다. 그 다음 간단한 테스트를 거쳐 에러가 발생하지 않는다면 개발이 완료되었다고 생각한다. 하지만 이러한 방법은 시간이 지나고 코드의 크기가 커질수록 버그 수정에 필요한 부분을 찾아내기 어려워진다. 이러한 개발 방법의 문제점들은 아래와 같다.특정 모듈의 개발 기간이 길어질수록 개발자의 목표의식이 흐려진다​ - 어디까지 진행했었는지​ - 모듈이 무슨 기능을 가져야 하는지작업 분량이 늘어날 수록 테스팅이 어려워진다 ​ - 로그가 어디있었는지개발자의 집중력이 필요해진다.​ - 테스팅 하려던 화면이 지나가면 다시 처음부터 ..논리적인 오류를 찾기..
Network - Network 계층 - 인터넷 프로토콜(IP) 인터넷 프로토콜이란(IP)? - 인터넷 프로토콜은 송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보 위주의 규약이며, OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다. 줄여서 아이피라고도 한다(출처 - Wiki) 특성 1. 인터넷 프로토콜은 다음과 같은 특성을 가진다 최선형(Best Effort) 말 그대로 어떠한것도 보장하지는 않고 데이터 전송에 최선을 다하기만 한다는 것이다 즉, 비신뢰성이며, 비연결형이다. 2. 비신뢰성의 경우 에러제어와 흐름제어를 하지 않는다 즉 에러를 발견하면 패킷을 버리기만하며 패킷이 잘못되었으니 다시 보내어달라는 등 의 패킷 복구작업을 취하지 않는다, 또한 송신측의 속도가 빠르고 수신측의 처리속도가 느려 데이..