분류 전체보기 121

백준 > 10814 나이순 정렬

문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다. a ..

백준 > 1316 그룹 단어 체커

어후 꽤나 애 먹은 문제였다 구현하는 것보다 어떻게 풀 지 생각하는 것이 훨씬 오래 걸렸다. 만약, 현재의 문자와 바로 이전의 문자가 동일하지 않은데 문자열 내에 같은 문자가 있었다면 cnt 수를 감소시키는 방향으로 문제를 풀었다. a = int(input()) cnt = a for i in range(a): arr = list(input()) for j in range(1, len(arr)): if arr[j-1] != arr[j]: if arr[j] in arr[:j-1]: cnt -= 1 break print(cnt)

안드로이드 생명주기

액티비티는 생명주기를 갖고 있습니다. (액티비티는 단순하게 화면이라고 생각할 수 있습니다. 카카오톡을 실행할 때 맨 처음 뜨는 로고가 박힌 화면, 친구 창 등등이 모두 하나의 액티비티에요) 유튜브를 보다가 전화를 받은 후 다시 유튜브를 볼 때, 영상을 이어서 시청할 수 있습니다. 단순히 화면의 입장에서 생각하면 유튜브 - 전화 - 유튜브 인데, 어떻게 이어서 시청이 가능할까요? 이밖에도, 앱을 사용하지 않을 때 시스템 리소스가 소비되는 것을 막거나, 가로/세로 회전하는 경우 비정상 종료가 되는 것을 막기 위해서 등 안드로이드 생명주기는 개발에서 꽤나 중요한 요소입니다. onCreate() 액티비티를 생성할 때 실행되는 메소드으로, 필수적으로 구현해야 합니다. 액티비티가 생성되면 생성됨 상태이지만, onC..

웹 취약점

XSS XSS(cross-site scripting) 취약점은 공격자가 악의적인 스크립트를 삽입해 피해자의 쿠키 혹은 세션을 탈취할 수 있는 취약점이다. XSS 취약점의 종류는 아래와 같다. Stored 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨옴 Reflected 악성 스크립트가 URL에 삽입 되고 서버의 응답에 담겨옴 DOM-based 악성 스크립트가 URL Fragment에 삽입 Universal SOP 정책을 우회 태그 삽입이 되지 않도록 함으로서 취약점을 막을 수 있다. 취약한 홈페이지의 경우 1이라는 내용이 담긴 메시지 창이 뜰 것이다. 하지만, 내가 입력한 것과는 달리 alert("1") 을 확인할 수 있다. 이는 url 인코딩을 사용한 것으로 간단하지만 효과적인 방법이다. CSRF..

공부/웹 2024.01.21

드림핵 > shell_basic

shellcode, opcode 등등이 머리를 어지럽게 한다. 하지만 계속 매달린 끝에 엇! 갑자기 뭔가 이해가 되었다. 문제 파일을 받으면 shell_basic.c 파일을 확인할 수 있다. main 함수가 아닌 다른 함수들은 풀이와 관련이 없다고 하니, main만 잠깐 보자 읽기, 쓰기, 실행 권한을 가진 메모리 영역을 할당해 셸코드를 저장한다. 우리는 드림핵 강의에서 아래의 코드를 배웠다. // File name: orw.c // Compile: gcc -o orw orw.c -masm=intel __asm__( ".global run_sh\n" "run_sh:\n" "push 0x67\n" "mov rax, 0x616c662f706d742f \n" "push rax\n" "mov rdi, rsp #..

공부/시스템 2024.01.04