본문 바로가기

분류 전체보기

(128)
2969 - 메뚜기 step 1더보기꽃잎이 많은 꽃은 절대 적은 꽃으로 이동할 수 없습니다. 그럼 꽃잎 수로 정렬을 한 다음 자기보다 더 많은 꽃만 고려해도 문제를 해결할 수 있습니다. 꽃잎 수로 정렬한 다음 문제를 해결합니다.step 2더보기dp[i][j] : i,j에 있는 꽃에 있을 때 이동할 수 있는 최대 횟수 이 dp를 어떻게든 구하면 이 문제를 해결할 수 있습니다.아래 그림에서 검은 칸에 메뚜기가 있다고 해봅시다. 이 칸에서의 dp값은 {빨간 칸에 있는 dp값의 최대값 + 1}입니다. 그럼 새로운 dp를 정의해 봅시다. Ldp[i][j] : i,j 포함 자기 왼쪽에 있는 모든 dp값들의 최댓값 이 dp를 왼쪽, 오른쪽, 위쪽, 아래쪽 모두 만들면 이 문제를 해결할 수 있습니다. 이것은 펜윅트리로 만들 수 있습니다...
webgoat http webgoat의 general을 보면 http에 대한 이야기가 나옵니다. 1번째 페이지에서는 http가 어떻게 움직이는지에 대한 설명이 나옵니다. 2번째 페이지에서 요청을 보낼 수 있습니다. 이름을 입력하라고 하는데 아무거나 입력해도 통과할 수 있습니다. f12나 ctrl + shift + i를 눌러 개발자 도구를 열어봅시다.여기의 네트워크 탭에서 어떤 통신이 오고갔는지 확인할 수 있습니다. 이름을 넣고 GO!를 누르면 attack1이라는 것이 보입니다. 이 영역을 누르면 해당 통신에 대한 정보를 볼 수 있습니다. 저희는 POST로 요청을 보냈다는 걸 알 수 있습니다. payload 탭에서는 보낸 정보도 확인할 수 있습니다. 3번 페이지에서는 보내는 요청이 GET인지 POST인지, magic number..
spring boot - api 구조 보통 프런트엔드에서 백엔드에 api를 호출하고 정보를 받아온 다음 그 정보를 화면에 보여줍니다. 그럼 백엔드에서 api를 받고 정보를 넘겨줄 수 있어야 하는데요, 어떤 식으로 진행이 되는지 알아봅시다.controllercontroller는 유저가 유저가 정보를 요청할 때 어떤 경로로 요청해야 하는지, 어떤 식으로 요청해야 하는지가 담겨 있습니다.파일은 src - main - java - com - example - streak 위치에 계속 만들것입니다. 해당 파일에 package로 health, controller를 만들고 java class로 healthController를 만듭니다. 여기에 다음과 같이 만듭니다. @Slf4j부터 만들면 알아서 import 부분이 만들어 집니다. 어노테이션(@~~)을 ..
webgoat 사용법 이제 webgoat를 시작해 보겠습니다.우선 계정부터 생성해 줍니다. 해당 계정으로 webgoat와 webwolf에 로그인 할 수 있습니다.webgoat는 피해자 컴퓨터라고 생각하면 되고 webwolf는 공격자 컴퓨터라고 생각하면 됩니다. webgoat의 webwolf 탭에서 webwolf에 대한 설명과 간다한 기능을 사용할 수 있습니다. 1에서는 webwolf 실행 방법이 있지만 이미 실행했으므로 넘어갑니다.2에서는 파일 업로드 기능에 대해 이야기합니다.3에서는 메일 함 기능과 실습이 있습니다. {webgoat 계정}@webgoat.org를 입력하고 메일을 보냅니다. 그럼 webwolf의 mailbox에서 메일을 받을 수 있습니다.  이제 코드를 입력하면 해당 과제를 클리어 할 수 있습니다. 왼쪽 위에..
[논문 구현] Encoder-Decoder with Atrous SeparableConvolution for Semantic Image Segmentation(DeepLabV3Plus) deepLabV3Plus는 이전 논문들과 다르게 모델 구조가 살짝 복잡합니다. 그래서 모델을 구현하는 것에 중점을 맞출 것입니다. 이전에 사용한 논문을 다시 가져왔습니다. atros conv는 기존의 conv를 변형한 것입니다. tensorflow 에서는 DepthwiseConv2D에 dilation_rate 속성을 주어 구현할 수 있는데 귀찮으니 ResNet50을 그대로 가져다 쓰겠습니다.모델 구현우선 512,512,3 크기를 입력받는다고 하겠습니다. keras.applications에서 ResNet을 가져옵니다. weights는 초기 가중치, include_top은 마지막 dense 레이어를 포함하는지 여부, input_tensor은 입력 크기입니다. 저희 모델의 큰 그림은 아래와 같습니다.여기서 *..
16324 - Jumbled String 문제 번역더보기subsequence :  문자열에서 일부 문자 하위 집합을 제거하여 얻은 문자열(ex. string에서 sing, i, sg 등)0과 1로 이루어진 비어있지 않은 문자열을 만들고 싶습니다. 이때, 문자열에서 subsequence가00인 것들의 개수, 01인 것들의 개수, 10인 것들의 개수, 11인 것들의 개수가 각각 $a$, $b$, $c$, $d$였으면 합니다. 이런 조건을 만족하는 문자열을 만드세요.step 1더보기$a$를 통해서 0의 개수를 알아낼 수 있습니다.$\frac{n(n-1)}{2} = a$인 $n$이 0의 개수입니다.같은 방법으로 1의 개수 역시 $d$를 통해 찾을 수 있습니다.이렇게 찾은 0, 1의 개수를 각각 $n$, $m$이라고 합시다.step 2더보기어떤 1을 잡..
spring boot - 시작 spring boot로 백엔드를 시작하기 위한 세팅입니다.spring initializrspring boot를 사용하기 위해 복잡한 세팅들이 있는데 이를 간단하게 해주는 사이트입니다(https://start.spring.io/). 여기서 언어, 버전, 의존성 등을 설정할 수 있습니다.몇 가지 유용한 의존성에 대해 알아보겠습니다.Lombok반복되는 부분을 아주 많이 줄여주는 annotation을 제공해 줍니다. 클래스를 만들 때 getter, setter를 통해 값을 읽고 씁니다. 그리고 toString을 통해 출력을 하고 생성자를 통해 객체를 생성합니다. 원래는 이 기능들을 구현해 주어야 하지만 Lombok 이 다 만들어 줍니다. 아니면 Data로 한 번에 만들 수도 있습니다. 그리고 @Slf4j 를 통..
웹 개발 - 프로젝트 2 - 5. streak lover 백엔드 api 백엔드에 특정 자료를 요청하기 위해서는 api를 호출해야 합니다. 이런 것을 쉽게 하기 위해 talent api를 사용할 것입니다. 크롬 확장 프로그램으로 talent api를 추가합니다. 그런 다음 크롬 - 퍼즐 모양 - 핀을 클릭해서 상단에 고정하고 talent api를 눌러줍니다. 아래와 같은 화면에서 api를 호출할 수 있습니다. api 만들기intelliJ로 가서 health controller를 만듭니다.  해당 페이지에서 다음과 같이 입력해 health api를 호출할 수 있게 만듭니다. Slf4j는 로그 출력을 위한 것입니다. talent api에서 healthapi를 호출합니다.  이것을 실행하면 성공적으로 호출되는 것을 알 수 있습니다.
webgoat 세팅 webgoat는 웹 해킹을 연습할 수 있는 워게임입니다. 세팅부터 해보겠습니다.javahttps://www.oracle.com/java/technologies/downloads/?er=221886#jdk22-windows 사이트로 가서 자바를 다운로드 받습니다. 본인의 운영체제에 맞는 파일을 다운받습니다. 파일을 받고 다음을 쭉 누르면 설치 자체는 쉽게 할 수 있습니다.이제 환경 설정을 합니다. C:\Program Files\Java로 가면 설치한 파일이 있습니다. 해당 파일 안으로 들어가서 bin을 환경변수에 등록합니다. 이제 컴퓨터를 껏다 켠 다음 cmd 창에 java -version를 입력합니다. 설치한 자바 파일이 나오면 성공입니다. webgoathttps://github.com/WebGoat/W..
[논문 리뷰] Encoder-Decoder with Atrous SeparableConvolution for Semantic Image Segmentation(DeepLabV3Plus) 일반적인 segmentation에 대해 잘 동작하는 논문입니다. U-net과 비슷한 계열이라고 할 수 있습니다. U-net 비교했을 때 무엇이 달라졌는지 알아보겠습니다.목표U-net은 의료 데이터에서 시작을 했고 해당 데이터 특성에 맞는 로스 function을 사용했습니다. 하지만 이 논문은 네트워크 구조를 향상하는 것에 목표를 두었습니다. 그러기 위해 독특한 convolution을 제안합니다. 일반적인 conv 연산은 이전 레이어의 피쳐가 10개, 필터의 너비와 높이가 3*3이라 하면 10*3*3 크기의 필터 하나가 하나의 피쳐 맵을 형성 합니다. 하지만 이거는 연산이 너무 많습니다. 그래서 아래 구조의 convolution을 제안합니다. (b)는 필터의 너비와 높이를 1*1로 만든 것으로 기존의 co..