본문 바로가기

전체 글

(44)
주식가격 https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr I. 개요스택을 이용하여 가격이 언제 떨어졌는 지 계산하는 문제이다. 가격이 떨어지지 않으면 스택에 넣고, 떨어지는 시점에서 스택을 비워주면 된다.  II. 알고리즘 설계마주할 수 있는 경우에는 실제로 떨어지거나, 한번도 떨어지지 않는 2가지 경우가 있다. 따라서 위 2가지의 경우를 모두 고려해야 한다. 1. 실제로 떨어지는 경우스택에는 이전에 본 가격의 index들을 넣어둔다. 현재 보고있는 가격이..
213. House Robber II https://leetcode.com/problems/house-robber-ii/I. 문제 개요DP를 활용하여 도둑질로 얻을 수 있는 최댓값을 구하는 문제이다. II. 알고리즘 설계만약 첫번째 집을 털면 2번째, 마지막 집은 털 수 없다. 왜냐하면 집들은 원형으로 놓여있기에, 첫번째 집을 털면 2번째와 마지막 집에 경보가 들어오기 때문이다. 따라서, 첫번째 집을 터는 경우와 털지 않는 경우 2가지로 나눠서 생각해야 한다. 1. 첫번째 집부터 터는 경우V(시작)XO...OX V: 시작점O: 털 수 있는 집X: 못 터는 집 dp에 사용할 list를 만들고, 1번째와 2번째 원소는 nums[0]으로 변경한다. 그다음 2번째 집부터 터는 경우와, 털지 않았을 때의 금액 중, 더 큰 값을 list에 집어넣는다 ..
Basic_Forensics_1 https://dreamhack.io/wargame/challenges/518 Basic_Forensics_1이미지 파일안에 Hidden 메세지가 숨어있다. keyword : W4!teBear flag : DH{flag}dreamhack.io  I. 문제 개요주어진 이미지에서, 스테가노그래피 기법으로 숨은 메시지를 찾아내는 문제이다. II. 풀이 zsteg 를 활용하면 숨은 메시지를 쉽게 찾을 수 있다. 이때 `grep DH`으로 flag 형식에 맞는 줄만 표시하도록 필터링해야 한다. 왜냐하면 zsteg가 여러가지 조합을 시도한 결과를 표시하기 때문이다.  III. 유사한 문제- https://ctftime.org/task/22186
등굣길 https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr I. 문제 개요DP를 활용하여, 유효한 경로의 갯수를 찾아내는 문제이다. II. 알고리즘 설계00000010000000000000 0 : 패딩0 : 웅덩이 dp 탐색에 사용할 2D-list는 위와 같이 초기화 할 수 있다. 윗쪽과 왼쪽에 0으로된 padding을 추가함으로써, 탐색할 때 경계를 넘어갈 경우에도 에러를 예방할 수 있다. 각 칸에 도달하는 경우의 수는 (현재 칸의 윗칸에 도달하는 경우의 ..
정수 삼각형 https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr I. 문제 개요 삼각형에 들어있는 숫자 중, 지나온 숫자들의 최대 합을 구하는 문제이다. II. 알고리즘 설계 및 풀이 1. DP 점화식 설계 0행: 7 1행: 3 8 2행: 8 1 0 주어진 삼각형을 위와 같이 직각 삼각형으로 보자. 2행의 "8"은 1행의 "3"에서밖에 접근할 수 없다. 2행의 "1"은 1행의 "3", "8" 두 군데에서 접근할 수 있다. 2행의 "0"은 1행의 "8"에서만 접..
N으로 표현 https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr I. 문제 개요 검증해야 하는 경우의 수가 과도하기에, 단순히 모든 경우의 수를 다 탐색하기에는 무리가 따른다. DP(Dynamic Programming)를 활용하여 살펴본 경우의 수를 저장하면, 모든 경우를 일일히 계산하는 수고를 덜 수 있다. II. 알고리즘 설계 및 풀이 1. 변수 초기화 ans = -1 dp = [set() for _ in range(9)] dp는 N을 사용한 횟수별로 나울..
의상 https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr I. 문제 개요 의상을 최소 하나 이상 선택하는 경우의 수를 구하는 문제이다. II. 알고리즘 및 풀이 1. 의상 분류 ans = 0 dct = dict() for cloth in clothes: name, category = cloth if category in dct.keys(): # 이전에 본 카테고리라면 dct[category].append(name) # value(list)에 의상 추가 ..
XSS Filtering Bypass https://dreamhack.io/wargame/challenges/433 XSS Filtering Bypass Description Exercise: XSS Filtering Bypass에서 실습하는 문제입니다. 문제 수정 내역 2023.08.04 Dockerfile 제공 dreamhack.io I. 문제 개요 필터링을 우회하여, 쿠키에 저장된 flag를 읽는 것이 목적이다. II. 취약점 분석 1. 필터링 우회 "javascript", "script", "on" 3개의 단어를 필터링 하여, 해당되는 단어를 빈 문자열 ""로 치환한다. 그러면 "script" 안에 "script"를 한번 더 넣은 "scriscriptpt"를 처리하는 경우를 생각해보자. "scriscriptpt" 안의 "script"..