본문 바로가기

전체 글82

[백준] 1로 만들기 다이나믹 프로그래밍(동적 계획법) 메모리 공간을 약간 더 사용하면 연산 속도를 비약적으로 증가시킬 수 있는 방법이 있습니다. 대표적인 방법이 다이나믹 프로그램 기법으로 동적 계획법이라고도 합니다. 대표적인 문제는 피보나치 수 입니다. 6번째 피보나치 수 f(6)을 구하려면 다음과 같이 함수 f를 반복해서 호출해야 할 것입니다. 그런데 f(2)와 f(1)은 항상 1이기 때문에 여기서 호출이 정지되게 됩니다. 또한 그림을 살펴보면 똑같은 호출이 반복적으로 나타납니다. 이러한 반복적인 호출은 불필요하며, 번수가 증가함에 따라 불필요한 호출 횟수는 기하급적으로 증가하게됩니다. 재귀 함수를 사용해서 피보나치 함수 코드를 작성해보겠습니다. def fibo(x): if x == 1 or x == 2: return 1.. 2024. 1. 11.
[이코테] 게임 개발 문제 현민이는 게임 캐릭터가 맵 안에서 움직이는 시스템을 개발 중이다. 캐릭터가 있는 장소는 1 X 1 크기의 정사각형으로 이뤄진 N X M 크기의 직사각형으로, 각각의 칸은 육지 또는 바다이다. 캐릭터는 동서남북 중 한 곳을 바라본다. 맵의 각 칸은 (A, B)로 나타낼 수 있고, A는 북쪽으로부터 떨어진 칸의 개수, B는 서쪽으로부터 떨어진 칸의 개수이다. 캐릭터는 상하좌우로 움직일 수 있고, 바다로 되어 있는 공간에는 갈 수 없다. 캐릭터의 움직임을 설정하기 위해 정해 놓은 매뉴얼은 이러하다. 현재 위치에서 현재 방향을 기준으로 왼쪽 방향(반시계 방향으로 90도 회전한 방향)부터 차례대로 갈 곳을 정한다. 캐릭터의 바로 왼쪽 방향에 아직 가보지 않은 칸이 존재한다면, 왼쪽 방향으로 횐전한 다음 왼쪽.. 2024. 1. 4.
[Python] 구글 뉴스 크롤링하기 오늘은 원하는 키워드를 구글 뉴스에서 크롤링하는 파이썬 코드를 작성해보려고 합니다. https://news.google.com/home?hl=ko&gl=KR&ceid=KR:ko https://news.google.com/home?ceid=KR%3Ako&gl=KR&hl=ko news.google.com url을 자세히 살펴보겠습니다. 구글 뉴스에서 특정 키워드를 검색하면 url이 어떤 형태로 변경되는지 살펴보겠습니다. https://news.google.com/search?q=네이버&hl=ko&gl=KR&ceid=KR%3Ako 검색창에서 "네이버" 라고 검색했는데 url에 변화가 생겼습니다. q=네이버 이라는 텍스트가 추가되었는데 여기서 q는 query의 약자입니다. 원하는 검색어를 url에 q={키워드}.. 2024. 1. 4.
[Linux] 윈도우에서 실행했던 파이썬 파일 옮겨서 실행시키기 먼저 리눅스(우분투) 계정 로그인합니다. 저는 naver_linux 세션으로 로그인하겠습니다. 로그인을 완료하고 윈도우에 있는 파이썬 파일을 옮길 폴더를 생성합니다. 저는 root 폴더에서 test 폴더를 생성하여 이곳에 파이썬 파일을 옮겨보도록 하겠습니다. 이제 윈도우(local)로 돌아옵니다. 윈도우 PowerShell를 실행시킵니다. 실행시켰으면 이동시키고 싶은 파이썬 파일이 있는 폴더로 이동합니다. 저의 파이썬 파일은 Users/LG/Linux_Python/Test.py입니다. 파일이 있는 폴더로 이동했습니다. 명령어를 입력합니다. scp -P [리눅스 포트넌버] [.\옮기고 싶은 파일] [계정이름@IP넌버]: [옮기고자하는 리눅스 폴더 위치] 해당 명령어를 입력하면 리눅스 계정 비밀번호를 입력하.. 2023. 2. 19.
[HTML+CSS] 표 테이블 만들기 1. 먼저 표 테이블의 기본 구성요소에 대해서 설명 드리겠습니다. HTML 파일을 열어 다음과 같은 코드를 작성합니다. -------------------- 제목으로 구성된 열들을 가진 행을 표시 제목 열1 ------- 제목으로 구성된 각 열을 표시 제목 열2 -------------------- 표의 내용을 나타내는 행들을 표시 -------------------- 표의 내용을 나타내는 각 행들을 표시 내용 열1 --- 표의 내용을 나타내는 각 열들을 표시 내용 열2 내용 열3 내용 열4 -------------------- 표의 마지막 행을 표시 표의 마지막 열1 표의 마지막 열2 thead, tbody, tfoot 은 html5에서 정의된 태그로, tr과 td로만 구성해도 문제없습니다. 해당 코드.. 2023. 1. 25.
웹 사이트 만들고 배포_서버는? 우리가 웹 사이트를 구성하는 코드를 짠다고 해서 내 코드가 인터넷에 연결되어있는 것은 아닙니다. HTML로 웹 사이트를 만들고 그 내용을 인터넷에 업로드하려면 웹 사이트를 구성하는 모든 코드파일을 서버 컴퓨터로 옮겨야 합니다. 개인은 웹 서버를 마련하기 어렵습니다. 비용때문인데요. 윈도우 서버 하나 평균 15~20만원정도 유지비가 든다고 합니다. 하지만 개인이 코딩공부하고 연습용으로 배포해보려고 한다면 무료 호스팅 서비스를 신청해서 이용하면 됩니다. 예로 닷홈이 있습니다. (dothome.co.kr) 2023. 1. 25.
[Python] 윈도우 venv 가상환경 설치하기 1. windows 명령 프롬프트에 들어갑니다. 2. 만들고자 하는 파일로 이동합니다. (C드라이브에 project폴더 안에 venv 가성환경을 만들어 보겠습니다.) 형식: C:\project> python -m venv 내가 만들고 싶은 가상환경폴더 이름 저는 가상환경폴더 이름을 pratice로 하겠습니다. C:\project> python -m venv pratice 3. 생성된 가상환경 폴더 pratice에 들어갑니다. 만드신 가상환경 폴더에 Script라는 폴더가 생성되었을 겁니다. 그 곳에서 가상환경을 활성화 시킬 수 있습니다. C:\project\pratice> Scripts\activate.bat 안되면 C:\project\pratice> Scripts\activate 그래도 안되면 C:\p.. 2023. 1. 25.
[Python] venv 가상환경 설정이 필요한 이유는? 우리는 프로그램을 짜고 배포합니다. 아나콘다(anaconda3)을 우리가 설치하고 사용한다고 했을 때 수많은 라이브러리 패키지들이 포함되어 있는 상태로 설치되어진다. 만약에 포함되어진 라이브러리가 없다면 추가로 설치해서 사용하면 프로그램은 잘 돌아갑니다. 그런데 문제는 배포하면서 발생합니다. 우리가 프로그램을 짜면서 설치했던 수많은 패키지들은 배포하려는 서버에는 전혀 깔려있지 않으며... 설령 무슨 패키지를 설치했는지 하나 하나 이름을 기록했다 하더라도 버전을 몰라서 설치했다 하더라도 버전이 달라서 프로그램이 작동하지 않을 수 있습니다. 그리고 시간이 지나면서 패키지들이 업데이트되는데, 하나 하나 업데이트하다 보면 서로 의존적인 패키지들 사이에 버전이 맞지 않아 호환이 되지 않는 경우들도 생길 수 있습니.. 2023. 1. 25.
[React] 리액트로 만든 웹, 숲으로 바라보기(part1 App.js란?) 앞으로 "리액트로 만든 웹, 숲으로 바라보기"는 구체적으로 개념을 하나하나 따져보는 것이 아닌 React로 제작한 웹 사이트가 대략 어떠한 구성으로 이루어졌는지 보여드리게 위해 작성하였습니다. React로 간단한 커뮤니티 사이트를 제작해보면 기본적인 틀은 다음과 같습니다. 1. Src 폴더 1. App.js 2. Component 폴더 1. Detail.js 2. Edit.js 3. Heading.js 4. List.js 5. Upload.js --------------- 6. Login.js 7. Register.js 3. Server 폴더 1. index.js 4. Style 폴더 1. ListCSS.js 2. PostDetailCSS.js 3. UploadCSS.js 4.UserCSS.js 하나하나.. 2023. 1. 22.
[React] Hooks란? Hook를 이용하여 기존의 Class 바탕의 코드를 작성할 필요 없이 상태값과 여러 React의 기능을 사용할 수 있습니다.'' Hook를 사용하면 컴포넌트로부터 상태 관련 로직을 추상화할 수 있습니다. 이를 이용해 독립적인 테스트와 재사용이 가능합니다. 1. useState useState는 가장 기본적인 Hook이며, 함수 컴포넌트에서도 가변적인 상태를 지닐 수 있게 해줍니다. import React, {useState} from 'react'; const Counter = () => { const [value, setValue] = useState(0); return ( 현재 카운터 값은 {value}입니다. setValue(value + 1)}>+1 setValue(value - 1)}>+1 );.. 2022. 12. 25.