목록전체 글 (259)
차근차근
0. 제목 백준 2751 수 정렬하기 2 BOJ 2751 수 정렬하기 2 C++ 2751 수 정렬하기 2 1. 문제 https://www.acmicpc.net/problem/2751 2. 풀이 O(N^2)인 정렬을 사용하면 안된다. 왜냐하면 수의 개수의 범위가 1,000,000까지이기 때문이다. sort는 최대 O(NlogN)이기 때문에 시간내에 정렬이 가능하다. 3. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include #include #include using namespace std; int main(int argc, const char * argv[]) { int N; int num; vector arr; cin..
0. 제목 백준 2667 단지번호붙이기 BOJ 2667 단지번호붙이기 C++ 2667 단지번호붙이기 1. 문제 https://www.acmicpc.net/problem/2667 2. 풀이 미로찾기와 비슷한 문제이다. 먼저 dx, dy는 좌,우,상,하 순으로 움직일 수 있도록 좌표설정을 한 배열이다. 이 문제에서 주의할 점이 입력을 받을 때 문자열로 받아야 한다는 것이다. 문자열로 받은 후 한글자마다 숫자로 만들어주었다. dfs함수를 보면 탐색을 할 때마다 cnt를 1씩 증가시켜준다. 그 후 visited의 원소를 true로 바꿔주고 반복문을 실시하게 된다. 이 반복문은 좌,우,상,하로 탐색을 실시하게 해주며 만약 좌표가 0보다 작아지거나 N보다 같거나 커지면 즉, 범위를 벗어나게 되면 건너뛰게 된다. 범..
0. 제목 백준 9466 텀 프로젝트 BOJ 9466 텀 프로젝트 C++ 9466 텀 프로젝트 1. 문제 https://www.acmicpc.net/problem/9466 2. 풀이 문제에서 프로젝트를 함께 하고 싶은 학생을 단 한 명만 선택할 수 있다고 하였다. 그렇기 때문에 vector를 이용할 필요가 없고 connect라는 배열을 선언해서 해결이 가능하다. connect[2] = 3; 의 의미는 2번 학생이 3번 학생을 가리키고 있다는 것이다. done은 이미 방문하였고 더 이상 볼 필요가 없는 점들을 표시하는 배열이다. visited는 방문 여부를 체크하는 배열이다. 먼저 여기서 dfs 함수는 사이클을 체크하는 함수로 쓰인다. 이 함수에 대해 설명해보면 다음과 같다. 처음에 방문하므로 visite..
0. 주소 문자열과 요청 파라미터 웹 사이트에 접속하기 위한 사이트 주소 정보는 노드에서 URL 객체로 만들 수 있다. 노드는 주소 문자열을 받으면 어디까지가 사이트 주소인지, 어떤 내용이 요청 파라미터인지 구별하도록 url 모듈이 있다. https://www.google.co.kr/?abcd=abc 라는 주소 문자열이 있다고 가정해보자. 노드는 URL객체로 만든다. protocol: 'https' host: 'www.google.co.kr' query: 'abcd=abc' 1. 주소 문자열을 URL 객체로 변환하기 parse() : 주소 문자열을 파싱하여 URL 객체를 만들어 준다. format() : URL 객체를 주소 문자열로 변환한다. url 모듈을 사용하기 위해 require() 메소드를 호출 ..
0. 노드란? 노드를 만든 이유는 그 당시 웹 서버에 파일을 업로드 할 때, 업로드가 완료되기 전까지 웹 서버에서 데이터를 조회한다던가 하는 등의 다른 작업을 할 수 없었다. 이 문제를 해결하기 위해 만든 새로운 서버 개발 도구가 노드이다. 웹 브라우저를 통해 내 PC에 있는 문서 파일 하나를 업로드 하고 싶다면 먼저 웹 서버에 업로드를 요청해야 한다. 이때 웹 서버에는 파일 업로드 기능을 담당하는 핸들러(Handler)하나를 만들어 둔다. 비동기 입출력 방식을 적용하였다. 프로그램에서 해당 파일의 내용을 처리할 수 있는 시점이 되면 콜백 함수가 호출된다. 자바스크립트에서는 변수에 함수를 할당할 수 있다. 따라서 변수에 할당된 함수를 다른 함수의 파라미터로 전달할 수 있다. 이렇게 파라미터로 전달된 함..
0. 서버 동작 방식 프로토콜이란 데이터를 서로 어떤 형태로 주고받을 것인지를 정한 것으로, 간단한 데이터의 형태이다. 웹브라우저에서 HTTP로 요청한 데이터를 받은 웹 서버는 필요한 작업을 수행한 후 HTTP로 응답을 보낸다. 웹 브라우저에서 볼 수 있는 웹 문서는 보통 HTML, CSS, JS를 이용해 만든 것이다. 스마트폰과 같은 모바일 단말에서는 웹 문서를 웹 서버가 아닌 단말 내부에 저장해 두었다가 화면에 띄운 후 웹 서버로 필요한 데이터만 요청하는 방식을 사용하기도 한다. 이때 에이잭스(Ajax)방식으로 데이터만 받아오는 경우가 많다. 이렇게 하면 매번 웹 문서를 가져오지 않고 필요한 데이터만 가져온 후 화면을 부분적으로 갱신할 수 있기 때문에 화면 처리 속도가 빨라지는 장점이 생긴다. 에이잭..
0. Cookie, Session 울랄라스파라는 곳이 있다. 울랄라스파는 회원등록을 하고 입장해서 내부 시설들을 맘껏 이용한 뒤 나올 때 한꺼번에 계산하는 방식이다. 우리가 브라우저로 어느 웹사이트를 이용하는 과정을 위 스파에 비유해 설명해보겠다. 이곳에서는 스파의 쿠폰북이 아닌 '쿠키북'이라는 수첩같은 것을 들고다니면서 이용하는 시설마다 이걸 보여주게 되어 있다. 이 '쿠키북'에는 시설 측에서, 혹은 내가 직접 뭔가 기록할 수도 있고 수정하고나 찢어서 버릴 수도 있다. 이 '쿠키북'의 핵심은 내가 들고다닌다는 것. 그리고 시설을 이용할 때마다 보여준다는 것이다. 쿠키는 사이트를 방문하고 이용할 때 브라우저에 저장되는 내용들이다. 브라우저는 내 컴퓨터에 있는것이므로 내가 갖고 있는 정보이다. 그런데 이 ..
0. Flask Flask는 프레임워크로 "마이크로프레임워크"라고도 한다. 플라스크는 기본적인 기능부터 시작해서 확장 가능하도록 설계됐다. virtual environment를 생성하고 flask라는 폴더를 홈디렉토리에 만들었다. pip install flask로 flask를 설치하고 python > import flask 하여 문제없는지 확인한다. 1. 초기화 모든 플라스크 애플리케이션은 애플리케이션 인스턴스를 생성해야 한다. 웹 서버는 클라이언트로부터 수신한 모든 request를 이 오브젝트에서 처리하는데 이때 웹 서버 게이트웨이 인터페이스(WSGI)라는 프로토콜을 사용한다. 애플리케이션 인스턴스는 Flask 클래스의 오브젝트이며 다음과 같이 생성된다. Flask 클래스 생성자에 필요한 한 가지 인수..
0. Web Server 동작원리 Web browser가 Web Server에게 정보를 요청한다. 어떤 요청은 Web Server가 직접 처리할 수 없다. 예를 들어 .py로 끝나는 것은 Web Server가 처리할 수 없다. 그래서 Web Server는 Python에게 CGI기술을 이용해서 위임한다. Python은 그 코드를 웹페이지로 바꿔준다. Python이 File을 읽고 다시 가져와서 Web Server로 보내준다. Web Server는 다시 Web browser로 보내준다. 1. 환경 구축 bitnami 설치 apache2 > conf > httpd.conf 에서 #LoadModule cgid_module modules/mod_cgid.so 찾은 후 주석으로 만들어주는 #을 지운다. 확장자가 ...
0. 무엇을 언제 써야할까? 파이썬의 양대 웹 프레임워크 두개 중에 고민하고 있다면 Flask를 쓰면된다.(초보자, 학습목적) 서비스를 제공하고 싶다면 django쓰면 된다.(서비스) Flask -> Micro Web Framework : 정말 필요한것만 제공해준다. pip install 을 통하여 추가적으로 설치해주는 것이다. Django -> 장고를 설치하게 되면 모든 것이 딸려온다. 보통 웹서비스를 만드는데 있어서 90~95퍼센트, 대부분의 경우는 모두 설치되어 있다.