분류 전체보기
wargame.kr 3번. QR CODE PUZZLE
시작하면 랜덤하게 생성된 QR코드 퍼즐 조각들이 있다. 각 조각을 더블클릭하면 빈 공간으로 움직인다. 개발자 도구로 보면 각각 번호가 매겨져 있다. 이걸 보고 하나하나 맞춰야 하나 싶었는데, 스크립트를 보면 unescape 함수가 있다. 웹을 통해서 데이터를 전송할 때 특정 문자들은 특수한 기능으로 사용되는데, 이로 인해 생기는 문제를 해결하기 위한 방법이 이스케이핑이다. unescape는 escape로 이스케이핑 된 문자열을 되돌린다. 참고: opentutorials.org/module/2/2824 콘솔창에 함수를 복사해 붙이면 주소를 얻을 수 있다. 소스 탭으로 가 보면 img 폴더 내에 qr.png 파일이 있다. 완성된 qr코드 이미지이다. 이 파일 주소를 복사한다. qr code decoder라 ..
wargame.kr 2번. flee button
시작하면 검은 배경에 click me!라는 버튼이 마우스를 피해 돌아다닌다. 개발자 도구에서 이 버튼이 있는 div 태그를 찾아서 style을 보자. position: absolute를 해제하면 click me! 버튼이 고정된 위치에 있게 된다. 누르면 Flag를 얻을 수 있다.
wargame.kr 1번. already got
시작하면 새 페이지가 열리고 "you've already got key! :p"라는 문구가 뜬다. 답을 입력하는 공간에 "can you see HTTP Response header?"라는 힌트가 있었으니 개발자 도구를 열어 네트워크 탭을 열어보자. 네트워크 탭을 열고 새로고침을 해 보면 already_got이란 이름의 문서가 있다. 이 문서를 열면 Response Headers에 FLAG값이 있다.
(C언어) 배열과 함수, 배열과 포인터
일반적인 매개 변수 #include int square(int a); int main(void) { int p = 16; int res = square(p); return 0; } int square(int a) { return a * a; } 일반적인 매개 변수는 함수가 실행되면 기억 장소가 할당된다. 위 예에서도 square 함수가 실행되면 a에 실제로 기억 장소가 할당되고 p값은 16이 저장된다. 배열 매개 변수 변수를 함수로 전달하듯이 배열도 함수로 전달할 수 있다. 다만 동작 방식이 조금 다르다. #include int square(int a[]); int main(void) { int p[3] = { 1,2,3 }; square(p); return 0; } int square(int a[]) ..
(c언어) 백준 10809. 알파벳 찾기
문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다. 구상 char word[100] = { 0 }; 단어의 길이가 100을 넘지 않으니 크기가 100인 배열 word..
(C언어) 백준 2675. 문자열 반복
문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./:이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력 각 테스트 케이스에 대해 P를 출력한다. 구상 문자열 S의 길이가 ..
블록체인 암호학 - 암호학적 해시 함수
해시(Hash) 해시 함수는 입력 데이터를 고정된 길이로 출력하는 함수다. 입력을 받아 출력을 계산하기는 쉬워도, 주어진 출력값에 해당하는 입력값은 찾기 어렵다. 작업 증명, 전자 서명, 멤버쉽 증명 등 다양한 곳에서 사용한다. 일반적인 해시 함수를 만드는 방법 해시 테이블(Hash table) 연관 구조를 이용하는 자료 구조 블룸 필터(Bloom Filter) 원소가 집합에 속하는지 여부를 검사하는데 사용되는 확률적 자료구조 체크섬(Checksum) 입력 데이터가 바뀌었는지 찾아내는 방법. 네트워크에서 오류가 발생했는지 체크하는 데 사용된다. 암호학적 해시 함수 이런 해시 함수를 작업증명이나 체인에 어떻게 적용할 수 있을까? 이런 해시 함수로는 적용할 수 없다. 일반적인 해시 함수와 다른 성질을 요구하..
(파이썬) 백준 1085. 직사각형에서 탈출
문제 한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 x y w h가 주어진다. w와 h는 1,000보다 작거나 같은 자연수이고, x는 1보다 크거나 같고, w-1보다 작거나 같은 자연수이고, y는 1보다 크거나 같고, h-1보다 작거나 같은 자연수이다. 출력 첫째 줄에 문제의 정답을 출력한다. 구상 좌우로 이동할 때 최단 거리 a와 상하로 이동할 때 최단 거리 b를 구하고 이를 비교한다. $a = min(|x-w|,|x|)$ $b = min(|y-h|,|y|)$ $res = min(a,b)$ 코드 x, y, w, h = map(int, ..