본문 바로가기

분류 전체보기142

[BaekJoon] 9251 LCS (Gold 5) - Python 문제 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. 입출력 예시 입력: 첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다. 출력: 첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다. 예제입력1) ACAYKP CAPCAK 예제출력1) 4 코드 l_1 = list(input()) # 첫 번째 문자열 입력 l_2 = list(input()) # 두 번째 문자열 입력 # LCS알고리즘 참고 # https://velog.io/@emp.. 2022. 12. 24.
[DreamHack] System Hacking Stage4 - Shellcode Lecture orw 셸코드 orw 셸코드 작성 - 파일을 열고, 읽은 뒤 화면에 출력해주는 셸코드이다. // /tmp/flag를 읽는 셸코드 // C언어 형식의 의사코드 char buf[0x30]; int fd = open("/tmp/flag", RD_ONLY, NULL); read(fd, buf, 0x30); write(1, buf, 0x30); - orw 셸코드를 작성하기 위해 필요한 syscall은 아래와 같다. syscall rax arg0 (rdi) arg1 (rsi) arg2 (rdx) read 0x00 unsigned int fd char *buf size_t count write 0x01 unsigned int fd const char *buf size_t count open 0x02 c.. 2022. 12. 24.
[BaekJoon] 1697 숨바꼭질 (Silver 1) - Python 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입출력 예시 입력: 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다 출력: 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 예제 입력1) 5 17 예제 출력1) 4 코드 from.. 2022. 12. 24.
[BaekJoon] 2630 색종이 만들기 (Silver 2) - Python 문제 아래 과 같이 여러개의 정사각형칸들로 이루어진 정사각형 모양의 종이가 주어져 있고, 각 정사각형들은 하얀색으로 칠해져 있거나 파란색으로 칠해져 있다. 주어진 종이를 일정한 규칙에 따라 잘라서 다양한 크기를 가진 정사각형 모양의 하얀색 또는 파란색 색종이를 만들려고 한다. 전체 종이의 크기가 N×N(N=2k, k는 1 이상 7 이하의 자연수) 이라면 종이를 자르는 규칙은 다음과 같다. 전체 종이가 모두 같은 색으로 칠해져 있지 않으면 가로와 세로로 중간 부분을 잘라서 의 I, II, III, IV와 같이 똑같은 크기의 네 개의 N/2 × N/2색종이로 나눈다. 나누어진 종이 I, II, III, IV 각각에 대해서도 앞에서와 마찬가지로 모두 같은 색으로 칠해져 있지 않으면 같은 방법으로 똑같은 크기의.. 2022. 12. 23.
[BaekJoon] 1002번 터렛 (Silver 3) - Python 문제 조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승환의 사진이다. 이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다. 조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오. 입출력 예시 입력: 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 이루어져 있다. 한 줄에 x1, y1, r1, x2, y2, r2가 주어.. 2022. 12. 22.
[잡담] 백준 프로필 저 백준에 이놈이 예 접니다. 솔브닥에서 라이벌할사람 !! 사실 거의 친구들끼리 팔로우 용도로 쓰긴 하는데,,,ㅋㅋㅋㅋㅋ 아무나 라이벌 막 하셔도 괜찮슴다 ㅎ.ㅎ https://solved.ac/profile/xmaaks solved.ac 알고리즘 문제해결 학습의 이정표 🚩 Baekjoon Online Judge 문제들의 난이도 및 티어 정보를 제공하는 사이트입니다. solved.ac 2022. 12. 22.
[DreamHack] System Hacking Stage3 - Tool: pwntools 설치 Lecture pwntools 설치 - 깃허브에 자세히 나와있다. (링크) GitHub - Gallopsled/pwntools: CTF framework and exploit development library CTF framework and exploit development library. Contribute to Gallopsled/pwntools development by creating an account on GitHub. github.com pwntools 설치 $ sudo apt-get update $ sudo apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential $ sudo pyth.. 2022. 12. 21.
[BaekJoon] 1074번 Z (Silver 1) - Python 문제 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 크기가 2N-1 × 2N-1로 4등분 한 후에 재귀적으로 순서대로 방문한다. 다음 예는 22 × 22 크기의 배열을 방문한 순서이다. N이 주어졌을 때, r행 c열을 몇 번째로 방문하는지 출력하는 프로그램을 작성하시오. 다음은 N=3일 때의 예이다. 입출력 예시 입력: 첫째 줄에 정수 N, r, c가 주어진다. 출력: r행 c열을 몇 번째로 방문했는지 출력한다. 1 ≤ N ≤ 15 0 ≤ r, c < 2N 예제입력1) 2 3 1 예제출력1) 11 예제입력2) 3 7 7 예제출력2) 63 예제.. 2022. 12. 21.
[DreamHack] System Hacking Stage3 - Tool: gdb 설치 Lecture 디버거란? - 컴퓨터과학에서는 실수로 발생한 프로그램의 결함을 버그(bug)라고 한다. - 개발자들은 이미 완성된 코드에서 버그를 찾는 디버거(Debugger)라는 도구를 개발했다. gdb & pwndbg gdb - gdb(GNU debugger)는 리눅스의 대표적인 디버거이다. 설치 방법 1. 콘솔을 연다 2. git clone https://github.com/pwndbg/pwndbg 를 입력한다. 3. root 비밀번호를 입력한다. 4. 설치가 완료되면 콘솔에 gdb를 입력하여 설치에 성공했는지 확인한다. - 실습 예제 1. 아래 코드를 작성하고 컴파일 한다. // Name: debugee.c // Compile: gcc -o debugee debugee.c -no-pie #inclu.. 2022. 12. 21.
[BaekJoon] 11724번 연결 요소의 개수 (Silver 2) - Python 문제 방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오. 입출력 예시 입력: 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다.(1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다. 출력: 첫째 줄에 연결 요소의 개수를 출력한다. 예제입력1) 6 5 1 2 2 5 5 1 3 4 4 6 예제출력1) 2 예제입력2) 6 8 1 2 2 5 5 1 3 4 4 6 5 4 2 4 2 3 예제출력2) 1 코드 import sys # 재귀호출 깊이 설정과 input함수 재정의를 위해 import sys... 2022. 12. 20.
[DreamHack] System Hacking Stage2 - Quiz: x86 Assembly 2 [Code] main: push rbp mov rbp, rsp mov esi, 0xf mov rdi, 0x400500 call 0x400497 mov eax, 0x0 pop rbp ret write_n: push rbp mov rbp, rsp mov QWORD PTR [rbp-0x8],rdi mov DWORD PTR [rbp-0xc],esi xor rdx, rdx mov edx, DWORD PTR [rbp-0xc] mov rsi,QWORD PTR [rbp-0x8] mov rdi, 0x1 mov rax, 0x1 syscall pop rbp ret ================================== [Memory] 0x400500 | 0x3037207964343372 0x400508 | 0x003.. 2022. 12. 20.
[DreamHack] System Hacking Stage2 - Quiz: x86 Assembly 1 [Register] rcx = 0 rdx = 0 rsi = 0x400000 ======================= [Memory] 0x400000 | 0x67 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x10 0x400008 | 0x44 0x5f 0x10 0x51 0x43 0x43 0x55 0x5d 0x400010 | 0x52 0x5c 0x49 0x10 0x47 0x5f 0x42 0x5c 0x400018 | 0x54 0x11 0x00 0x00 0x00 0x00 0x00 0x00 ======================= [code] 1: mov dl, BYTE PTR[rsi+rcx] 2: xor dl, 0x30 3: mov BYTE PTR[rsi+rcx], dl 4: inc rcx 5: .. 2022. 12. 20.
728x90