전체 글 (44) 썸네일형 리스트형 전화번호 목록 https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr I. 문제 개요 모든 접두어 조합을 파악하고, 주어진 전화번호의 접두어가 앞서 파악한 조합에 있는 지 판별해야 한다. 접두어 조합은 O(n)으로 파악할 수 있지만, 알아낸 접두어 조합 안에서 탐색하는 것이 관건이다. 순차적으로 탐색할 경우, 최종적으로 O(n^2) 만큼의 시간복잡도를 소모하게 된다. 그 이유는 조합 형성에 더불어, 탐색에 추가적으로 O(n)의 시간복잡도를 소모하기 때문이다. 따라서.. 리코쳇 로봇 https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr I. 문제 개요 BFS를 활용하여 최단 경로를 찾는 것이 문제의 목표이다. 하지만, 여기서는 로봇이 장애물 또는 경계에 부딪힐 때 까지 움직인다는 점에 주의해야 한다. 로봇이 한번에 한 칸씩 움직이는 상황이 아니다. II. 알고리즘 및 풀이 1. 초기화 및 탐색준비 # 1. 초기화 및 탐색준비 ans = -1 n, m = len(board), len(board[0]) que = deque() d.. 요격 시스템 https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr I. 문제 개요 미사일은 최소로 발사해야 하니까, 가장 많이 겹치는 구간에 발사하는 방향으로 알고리즘을 설계해야 한다. II. 알고리즘 및 풀이 여기에서는 그리디 알고리즘과 정렬을 사용한다. 그리디 알고리즘은 현재 상황에서 최선의 선택을 하는 알고리즘이다. 1. 정렬 targets.sort(key = lambda x: x[1]) st = 0 ed = 0 주어진 폭격미사일들의 끝 구간을 기준으로,.. ssp_001 https://dreamhack.io/wargame/challenges/33 ssp_001 Description 이 문제는 작동하고 있는 서비스(ssp_001)의 바이너리와 소스코드가 주어집니다. 프로그램의 취약점을 찾고 SSP 방어 기법을 우회하여 익스플로잇해 셸을 획득한 후, "flag" 파일을 읽으세 dreamhack.io I. 개요 II. 취약점 분석 1. 보호기법 파악 쉘코드는 NX가 활성화되있으므로, 메모리에 넣어도 실행할 수 없다. 스택 카나리가 존재하므로, payload에 카나리의 값을 넣어줘야 공격을 할 수 있다. 2. 스택 카나리 pwndbg에서 "canary" 명령을 사용하면, 스택 카나리의 값과 주소를 알 수 있다. ebp 근처의 메모리를 살펴보면, 카나리는 ebp로부터 4바이트 떨.. basic_exploitation_001 https://dreamhack.io/wargame/challenges/3 basic_exploitation_001 Description 이 문제는 서버에서 작동하고 있는 서비스(basic_exploitation_001)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 "flag" 파일을 읽으세요. "flag" 파일의 내용 dreamhack.io I. 개요 버퍼 오버플로우 취약점을 이용하여, 우리가 원하는 함수를 실행하도록 프로세스의 흐름을 조작하는 것이 목표이다. basic_exploitation_000과 다른 점은, 쉘코드를 사용해야 할 필요가 없다는 점이다. basic_exploitation_000은 바이너리 안에 우리가 원하는 쉘을 실행할 수 있는 함수가 없기에, 주어지.. basic_exploitation_000 https://dreamhack.io/wargame/challenges/2 Return Address Overwrite https://dreamhack.io/wargame/challenges/351 Return Address Overwrite Description Exploit Tech: Return Address Overwrite에서 실습하는 문제입니다. dreamhack.io I. 문제 개요 문자열을 입력하는 부분에서 오버플로우를 일으켜, main 함수의 반환주소를 덮어써야 하는 문제이다. II. 취약점 분석 알파벳 A를 여러번 입력하면 에러가 발생한다. 그 이유는 오버플로우가 발생하여, 메모리 영역을 무단으로 침범했기 때문이다. 이를 통해 버퍼 오버플로우 취약점이 있다는 사실을 파악할 수 있다. 자세히 알아보기 위해, 주소 "0x0000000000400719"에 breakpoint를 걸고 주어진 바이너리를 실행해보자.. [PCCE 기출문제] 10번 / 데이터 분석 https://school.programmers.co.kr/learn/courses/30/lessons/250121 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 개요 주어지는 조건에 맞는 데이터들만 골라서, 정렬하는 문제이다. 해시테이블을 이용하면, 원하는 카테고리에 맞는 열 번호를 한번에 알아낼 수 있다. 알고리즘 및 풀이 1. 변수 정의 ans = [] # 조건에 맞는 데이터 저장 n = len(data) dct = { # 기준에 대응하는 (열, 번호) 쌍을 보관하는 해시테이블 "code" : 0, "date" : 1, "maximum" : 2.. 이전 1 2 3 4 5 6 다음