분류 전체보기 92

백준_1018 : 체스판 다시 칠하기 - C++

문제 알고리즘 - 체스판과 일치하는 필름을 만들어 M*N 크기의 보드에 이동하며 가져다 대면서 추가로 색칠하는 횟수가 가장 적은 경우를 찾으면 되는 간단한 문제이다. - 즉 모든 수에서 추가로 색칠 하는 경우가 가장 적은 최솟값을 찾으면 된다. - 이 때 WBWB... 로 시작하는 경우와 BWBW 로 시작 하는 경우 모두 돌리면 체스판이 되기 때문에 두가지 겨우 모두 생각 해 주어야 한다. - 칠을 다시 해야 하는 타일의 수는 색이 다른 타일의 수와 동일하다. 코드 - WBWB.. 일때 바꾸어야 할 타일을 구하는 함수와 반대일때의 함수를 만들어 두면 구현에 편리하다. #include #include #include #include using namespace std; string W_B[8] = { "W..

알고리즘/백준 2023.05.10

[Nextjs] Next로 프론트 공부(1) - 프로젝트 생성

들어가며 - Refutsal 프론트를 다시 분석하며 프론트 공부를 해보려고 한다. 이번목표 - 넥스트js 프로그램을 생성하고 yarn dev 를 통해 개발 웹을 띄워 본다. Nextjs 란 - Next.js는 리액트를 위해 만든 오픈소스 자바스크립트 웹 프레임워크이다 - 리액트에는 없는 서버 사이드 렌더링server-side rendering(SSR), 정적 사이트 생성static site generation(SSG), 증분 정적 재생성incremental static regeneration(ISR)과 같은 다양하고 풍부한 기능을 제공한다. Nextjs 프로젝트 생성하기 - 다음 명령어로 npx 를 통해 프로젝트를 생성 한다. $ npx create-next-app@latest - "what is you..

[SpringBoot + Kotlin] Querydsl 적용 및 DB 관리

들어가며 - 기존에 사용 했었던 JPA 의 기본적인 메소드인 find, save 등 만으론 원하는 모든 기능을 구현 하기는 힘들다. - Querydsl 을 사용하면 이러한 점을 보안 할 수 있다. - SQL 의 쿼리문과 유사 하기 때문에 구현 하고자 하는 대부분의 기능을 구형 가능 하다. Build.gradle 파일 수정 - querydsl 을 사용하기 위해 필요한 플러그인과 설정들이 필요하다. - 다음과 같이 설정 하면 된다. - 설정 후 run 을 해 준다.(dependencies 에 kapt 추가시 에러가 날 수 있는데 그럼 해당 코드를 빼고 run 을 한 후 추가 하면 된다.) //biild.gradle.kt plugins { id("org.springframework.boot") version ..

[SpringBoot + Kotlin] Scheduled DB 의 업데이트 날짜와 비교해서 실행

들어가며 - 정보중 정보를 업데이트 한 날짜는 생각보다 중요하다. - 앞서 진행 한 Scheduled 방식은 서버가 잠시 중단되거나 모종의 이유로 다시 시작되었을때 내가 원하는 대로 돌아가지 않을 수 있다. - 이러한 상황을 방지 하고자 DB 에 업데이트 날짜와 시간을 기록하고 이와 비교하며 업데이트 하는 것이 좀더 안전하다 볼 수 있다. - 이번 시간에는 새로 짜면서 글을 쓰기엔 조금 복잡 하니 원래 하던 프로젝트의 코드 일부분을 가져와 설명 하도록 하겠다. ChkNeedUpdate.kt - Time 을 포멧팅 해주는 함수 - DB 에 저장 되었던 시간과 현재 시간 사이의 시차를 계산하여 업데이트 할 필요가 있는지 확인해 주는 함수 이다. - 같은 방식으로 원하는 시간 차이(1초, 10분, 12시간 ...

[SpringBoot + Kotlin] @scheduled로 스케줄 처리 및 corn 설정

들어가며 - 앞서 했었던 영화 정보나 상영중인 영화 리스트 같은 경우는하루에 한번씩 최신화 해 주어야 하는 기능이다. - 이처럼 프로그램을 짜다 보면 따로 실행 명령을 하지 않아도 주기적으로 자동으로 실행 해 주었으면 하는 기능 들이 있다. - 이러한 문제를 해결 할 수 있는 방법이 바로 스케쥴러를 사용하는 것이다. @Scheduled 사용법 1. Scheduled - 스케쥴링을 사용하고자 하는 클래스 위에 @EnableScheduling 을 추가한다. - 주기적으로 실행하고자 하는 메소드 위에 @Scheduled(cron = "~~") 을 붙히면 된다. 2. cron - 이때 각 자리에 [*] : 모든 조건 [?] : 날짜와 요일에서 설정값이 없을때 [-] : 범위를 지정 할 때 [,] : 여러 값을 ..

[SpringBoot + Kotlin] Jsoup 을 이용한 웹 크롤링

들어가며 - 전 시간에 API 호출을 이요하여 원하는 데이터를 수집 하여 보았다. - 하지만 모든 사이트에서 데이터를 호출하는 API 를 제공 하는 것은 아니다. - 이런 경우에 사용할 수 있는 방법에 웹의 HTML 에 있는 데이터를 직접 가지고 오는 방법이다. 크롤링 하고자 하는 웹페이지의 개발자 모드 열기 - 우선 당연한 이야기지만 크롤링 하고자 하는 웹 페이지를 열어야 한다. - 이번 시간에는 저번시간에 진행 했던 영화 정보를 크롤링을 통해 가져 오는것을 진행 해 보겠다. - 우측의 연한 파란 부분이 좌측 웹 사이트의 영화 정보부분임을 알 수 있다. - 또한 내부의 "inner_cont" 가 영화 정보를 답고 있음을 알 수 있다. 파일 생성 - 우선 크롤링코드를 적을 파일을 생성 해 준다. jsou..

[SpringBoot + Kotlin] Jsoup을 이용하여 프로그램에서 API 호출

들어가며 - 앞서 정해진 데이터를 DB 에 insert 하였다면 이제는 내가 필요로 하는 데이터를 DB 에 넣어야 한다. - 내가 한 프로젝트에선 여러 영화 사이트의 API 를 사용하여 영화 정보를 수집 저장 하였다. - 이번 시간에는 GET, POST 방식으로 API 를 호출 하는 방법을 알아 보도록 하겠다. Build.Gradle 에 Jsoup dependencies 추가하기 - 앞서 maria DB 의 dependencies 를 추가 한 것 처럼 Jsoup 도 사용하기 위해 추가해 주어야 한다. - 다음 코드를 build.gradle 의 dependencies 에 추가 해 준다. - 그 후 build.gradle 을 run 해 준다.(우클릭 후 run) implementation("org.jsoup..

[SpringBoot + Kotlin] JPA Repositor를 이용해 DB 에 원하는 데이터 저장

들어가며 - DB 를 생성하였으니 이제 DB 에 원하는 값을 넣을 수 있어야 한다. - 여기서는 Spring FrameWork 의 JPA Repository를 이용하여 DB 를 관리 할 것이다. 미리보기 - 실제 과제에선 다음과 같은 결과가 나왔다. - 다음 영화 api 를 이용해 영화 데이터를 가져 오고 원하는 컬럼에 맞게 가공하여 저장 하였다. DB 에 사용할 table 만들기 - Intellij 우측의 "Database" -> 사용할 DB 에서 우클릭 -> New -> Table 을 눌러 사용할 테이블을 생성후 이름 입력 - "columns", "keys" 등을 우클릭 하여 필요한 항목을 생성 한다. - 만약 SQL 문이 익숙한 사람이라면 DB 를 우클릭 한 후 "Query SQL" 을 클릭해 SQ..

[SpringBoot + Kotlin] Controller 를 통해 request 보내기(실행하기)

들어가며 - 프로그램을 짜면 재대로 작동 하는지 테스트를 하면서 개발 해야 한다. - 지금은 SpringBoot 와 Kotlin 을 이용해서 백앤드를 짜고 있으니 나의 서버에 requset 를 보내 실행 하는 방법을 알아야 한다. - SpringBoot 의 RestContoller 를 이용해서 이를 해결 할 것이다. 미리보기 - 실제 과제에서 사용한 controller 의 일부이다. - 만약 getMovieList 를 실행 하고 싶다면 [주소(ex) http://localhost:8080)/api/movieinfo 와 같이 url 에 입력 하면 실행 된다. - {movieId} 처럼 변수가 들어갈 수도 있다. Controller 생성 - 우선 controller 는 Controller 디렉토리에 저장 하..

[SpringBoot + Kotlin] DB 생성하고 연동(Intellij 사용)

들어가며 - 실제 프로젝트를 진행 할 때는 나스에 DB 를 설치 하고 연동 해서 했지만 지금 사용하기엔 어려움이 있기 때문에 virturebox 에 DB 를 설치 하고 연동 하는 작업을 해 보겠다. Maria DB 설치 - 우분투의 버전은 20.04 버전을 사용 하였다(uname -a) 명령어를 통해 확인 가능 - 우선 우분투 update 를 통해 패키지 목록을 최신화 시켜 준다. - install 을 통해 mariaDB 를 설치 해 준다.(sudo apt install mariadb-server) - 이때 sudo 는 관리자 권한으로 실행 한다는 뜻이다. Maria DB 보안 설정 - Maria DB 의 계정과 보안 설정을 위해 다음 명령어를 실행 한다. (sudo mysql_secure_install..