본문 바로가기

분류 전체보기

(128)
14207 - 약수 도로 step 1더보기모든 도시를 정점으로, 도시 간 이동을 간선으로 표현하면 쉽게 문제를 풀수 있습니다. 물론 시간과 공간만 충분하다면 말이죠. 조금 더 표율적으로 하기 위해 정점 $X$ 를 $X$의 배수인 모든 정점을 하나로 뭉쳐 놓은 것이라 생각할 수 있습니다.step 2더보기답이 0이나 1인 경우는 너무 쉬우니 생략하겠습니다. 아래 예시는 예제 입력 4를 기준으로 하고 있습니다.정점들을 모두 표시한 다음 시작 점을 포함하는 출발 정점들을 표시해 봅시다. 마찬가지로 도착 정점도 표시해 줍니다. 도착 정점 $X$와 출발 정점 $Y$가 있을 때 $LCM(x,y) \le N$ 이면 $X$에서 $Y$로 가중치 0인 간선을 만들어 줍니다. 아래는 간선의 일부만 만들었습니다. 이제 BFS를 돌리면 답을 알 수 있습..
웹 개발 - 프로젝트 2 - 4. streak lover 백엔드 db 이제 백엔드 개발을 위해 스프링을 설치합니다. 우선 스프링을 설치하고(https://codestudycafe.tistory.com/98) spring initializr(https://start.spring.io/)로 갑니다. JPA, MySQL, Lombok, Spring Web를 설정해 주고 압축을 풀어줍니다.application.properties를 yaml로 바꿔주고 db 설정을 해줍니다. 그리고 workbench를 이용해 db 스키마를 만들어 줍니다. 이때, 문자는 utf8mb4를 사용합니다. 그럼 이제 db를 사용할 준비가 되었습니다.
mysql 설치 백엔드에 데이터베이스가 빠지면 안되죠. mysql과 workbench를 설치해 줍니다.docker우선은 docker를 설치해 줍니다. mysql을 도커를 이용해 돌릴 것이기 때문이죠. docker 설치 사이트(https://www.docker.com/)로 가서 설치합니다. 설치를 쭉 진행하고 컴퓨터를 재시작 해 주면 오른쪽 아래에 도커가 돌고 있는 것이 보입니다.터미널에 docker -v로 치면 버전이 나올 것입니다. 그럼 잘 설치가 되었다는 뜻입니다.검색에 mysql을 검색한 다음 pull을 받습니다. 이제 images로 가서 run을 누릅니다. optional setting이라고 나오는데 일단 그냥 넘어가 봅시다. 그럼 에러가 납니다. 비밀번호를 설정해 주라고 하네요. 아까 세팅을 안했기 때문인 것 ..
spring boot 설치 백엔드 개발을 위한 다양한 프레임 워크가 있는데요, 한때 정말 많이 쓰이던 프레임워크가 spring boot입니다. spring boot를 시작하는 과정을 보여드리겠습니다. intelliJ저는 intelliJ를 이용해서 개발을 할 것입니다. 크롬에 intellij를 입력해서 공식 홈페이지(https://www.jetbrains.com/ko-kr/idea/)로 이동합니다. 무료로 사용할 것이기 때문에 community 버전을 설치합니다.. 설치 파일을 시작하고 나오는 창에서 아래와 같이 선택해 줍니다. 다음을 계속 눌러 설치를 진행해 줍니다. 설치를 마친 다음 메모리 사용량을 조금 늘려 주겠습니다. 옵션의 VM option으로 갑니다. 최소와 최대 메모리 사용량을 조절해 줍니다. 저는 1G, 2G로 설정했..
21034 - Go To Goal 문제 번역더보기0번 칸부터 $ 2N + M$번 칸까지 $2N + M + 1$개의 칸이 있는 게임 판이 있습니다. 당신은 0번 칸에 있고 특수 카드 $N$장과 일반 카드 $M$장을 가지고 있습니다. 특수 카드를 사용하면 2칸을, 일반 카드를 사용하면 1칸을 갈 수 있습니다. 이때, 특수 카드는 연속해서 3번 사용할 수 없습니다. 마지막 칸에 도착할 수 있는 경우의 수를 구하세요.step 1더보기$N$과 $M$이 작으면 dp로 해결할 수 있습니다. 하지만 그러기에는 드가 너무 많죠. 결국 경우의 수를 구하는 문제니 수학으로 접근해 봅시다.0부터 시작하는 카운트가 하나 있다 생각해 봅시다. 특수 카드를 쓰면 카운트가 1 증가하고 일반 카드를 쓰면 카운트가 0으로 초기화 됩니다. 카운트가 2를 넘지 않도록 모든..
[논문 구현] You Only Look Once:Unified, Real-Time Object Detection(YOLO v1) 구현 모델 구현모델 구현 자체는 상당히 쉽습니다.우선 Conv 부분을 먼저 만들어 줍니다.아래와 같이 만들어 줍니다. 그리고 밑에 Dense를 사용합니다. 이때, gpu 메모리가 터진다고 경고를 할 때가 있는데 껐다 켜면 해결이 됩니다. 최종적으로 7*7*(3+5*2)로 나옵니다. 3은 클래스의 수입니다.로스로스를 구현해 보겠습니다. 우선 오브젝트가 있는 것과 없는 것으로 나눕니다. 오브젝트가 있는 각각의 셀을 박스 예측과 클래스 예측으로 나눕니다. 한 피쳐 픽셀 당 2개의 바운딩 박스를 예측하므보 5*2 개를 뽑아냅니다. 오브젝트가 없는 것에 대해 confidence score를 계산합니다. 예측한 바운딩 박스와 타겟의 바운딩 박스의 IOU를 구한 다음 가장 많이 겹치는 박스를 구합니다. 셀 당 2개의 박스..
22204 - Tiny - 4 문제 번역더보기테트리스에서 몇가지 조건이 변경되었습니다.1. 게임 판은 9*9입니다.2. 블럭은 회전이 불가능하고 떨어지는 동안 움직일 수 없습니다.3. 블럭은 9 종류가 있습니다.4. 블럭이 떨어지는 순서가 있을 때 모든 블럭을 다 떨어트려야 합니다.step 1더보기이 문제는 지금까지의 문제와 결이 살짝 다릅니다. 게임 판이 주어졌을 때 해당 게임 판이 얼마나 좋은지 점수를 매겨봅시다. 이 점수가 좋은 쪽을 따라가다 보면 게임을 끝낼 수 있습니다.step 2더보기3가지 기준을 세웁니다.1. 비어있는 가로줄 당 20점2. 블럭을 놓았을 때 제거되는 가로줄 당 90점3. 빈칸 위에 블럭이 있는 경우 블럭 개수 당 -5점 앞으로 올 4개의 블럭을 놓을 수 있는 경우의 수는 $9^4$입니다. 모든 경우에 대해..
dvwa xss reflected 이전의 xss 공격은 서버에 공격 스크립트를 저장해 두고 이를 유저가 보게 만들었습니다. 이번에는 서버에 저장되지 않을 때 어떻게 하는지에 대한 것입니다. dvwa의 xss reflected로 갑니다. 여기서 를 입력합니다. 그럼 아래처럼 알림이 나옵니다. 즉, 저희가 원하는 스크립트를 실행할 수 있다는 뜻입니다.그리고 url을 보면 저희가 넣은 값이 인코딩된 채로 보여집니다.http://172.30.1.7/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%27%21%27%29%3C%2Fscript%3E# 쿠키를 탈취해 로그인 정보를 가져옵시다.를 하면 쿠키를 얻을 수 있습니다. 그리고 document.location으로 특정 사이트로 이동시킬 수 있습니다.그렇다면 ..
웹 개발 - 프로젝트 2 - 3. streak lover 프론트 스트릭 부분을 계속 만들어 봅시다.7개의 가로줄과 약 50개의 세로줄을 만듭니다. 리액트는 이런게 되서 참 좋아요.적절한 디자인을 해 주면 다음처럼 나옵니다. 각 칸은 하루를 나타냅니다. 그럼 오늘에 해당하는 칸 까지만 나타내고 그 뒤는 나타내지 않을 것입니다. 만약 어제 백준 문제를 풀었다면 해당 칸은 색칠이 되어 있어야 합니다. 각 칸이 어떤 날짜를 나타내는지 알아냅니다.각 칸에 있는 숫자는 오늘로부터 며칠 전 일인지 나타냅니다.해당 날이 체크가 되어야 하는지 계산하고 해당 값에 따라 배경을 바꿔 줍니다. 그럼 아래와 같이 나옵니다. 생각해 보니 각 스트릭 마다 고유의 id를 넣어줘야 할 것 같습니다.id를 넘겨 주고 해당 id의 해당 날에 해결한 경우 체크해 줍니다.  지금은 백엔드가 없어서 이렇게..
dvwa sql injection (blind) sql의 결과를 참, 거짓으로만 반환하는 경우에 사용할 수 있습니다. 뭔가 설정이 잘못되었는지 다 나오고 있긴 하지만 참, 거짓만 나온다 가정하고 그냥 진행해 보겠습니다. 우선 ' or length(database()) =1#를 입력해 봅니다. 데이터베이스의 글자 길이가 1인지를 묻습니다. 아무 반응이 없는것을 보니 아닌가 봅니다. 이렇게 쭉 입력해 봅니다. 4를 입력했을 때 성공적으로 나옵니다. 지금 데이터베이스 이름의 길이가 4인가 봅니다. 사실 1' union select 1, database()# 를 입력해서 바로 알아낼 수 있기도 합니다. 하지만 블라인드인 경우에는 이렇게 알아낼 수 없습니다. 그 대신 1' or substr(database(),1,1)='d'# 를 이용해서 알아볼 수는 있습니다..