코딩/코딩 이모저모 33

idea - 원에서 두 호의 위치 관계

문제를 풀다가 문제에서 쓰이는 구현의 좋은 아이디어가 떠올라서 글을 쓰려고 한다. 엄청나게 대단한 것은 아니지만, 이 아이디어를 쓰지 않고 구현을 하면 구현을 포기할 정도로 역겨워지며, 꼭 기억하고 싶기 때문에 글로 남기려고 한다. 원에 호가 두 개 있다. 그 두 개의 호에 대한 위치관계를 알아내는 것이 목표이다. 원에 n개의 지점이 있고, 두 개의 지점 번호를 통해서 호를 표기한다. (a,b)에서 bb.ss가 되며, 나머지는 보이는 그대로 대소 관계에 따라서 경우가 나온다. 코드는 아래와 같이 나온다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ll mat(pii a,pii b){ ll p=a.ff; a.ff=(a.ff+nn-p)%nn; a.ss=(a.s..

Bandit Walkthrough level 14 to level 26

Lev.14 sshkey.private 파일 확인. ssh -i sshkey.private bandit14@localhost를 입력하여 서버에 host권한으로 들어간다. 비밀번호의 위치를 알려주었으므로 cat과 절대 경로를 이용해서 들어가면 비밀번호 4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e를 얻을 수 있다. Lev.15 nc - 네트워크를 통해 읽거나 씀 nc [host] [portnumber] echo - 응답 echo 4wcYUJFw0k0XLShlDzztnTBHiqxU3b3e | nc localhost 30000 를 입력하여 전달하면 비밀번호 BfMYroe26WYalil77FoDi9qh59eK5xNr를 얻을 수 있다, Lev.16 openssl s_client -connect loc..

Bandit Walkthrough level 0 to level 13

방학 때 했었는데 뇌가 썩었는지 많이 까먹어버렸다. bandit을 해야할 명분이 생겨서 다시 하는김에 다시 까먹지 않고, 깔끔하게 정리하기 위해서 글을 쓰려고 한다. 어떤식으로 쓰는(이 글은 지속적으로 업데이트 됩니다.) Before start Bandit은 명령어를 활용하여 다음 단계 서버의 비밀번호를 계속해서 알아내는 퍼즐이다. 다양한 명령어를 사용하여 비밀번호를 알아내고, 그 번호를 바탕으로 다음 서버에 들어간다. 이를 통해서 다양한 명령어를 학습할 수 있어 ctf 를 시작할 때 명령어를 모른다면 거의 필수적으로 한다. Lev.0 man - manual - 정말 중요하다! 명령어에 대한 정보를 알 수 있다. man 명령어 - 명령어에 대한 정보 검색 ssh - Secure Shell - 서버에 접속..

10~11 월 PS 일지 + 나의 PS 계획

Codeforces 코드포스는 한 동안 쉬었다. 솔직히 내 실력이 만약 떨어졌다면 가장 큰 원인은 꾸준히 코드포스를 하지 않았기 때문이라고 할 수 있다. 하지만, 코드포스에 시간이 안 맞는 것도 컷다. 할일도 꽤나 많았고, 시간대가 애매했다. 최근에는 너무 코포를 안했다고 느껴서 레이티드 버츄얼을 돌리고 있다. 그래도 아직 무난하게 오렌지 실력은 나오고 있다. BOJ & Solved.ac 약 40문제 정도를 풀었다. 많지는 않은 수치이지만 꽤나 어려운 문제들을 위주로 풀었다. 특히 한 동안은 solved.ac의 class 9 에센셜 문제들을 위주로 풀었다. class 9 에센셜 24문제중 15 문제를 풀었다. 경험치는 많이 안오른 것처럼 보이지만 사실 제작한 문제와 세그트리 등의 많은 문제등의 경험치가 ..

2020 한국 정보 올림피아드 2차 결과 및 후기

내 인생 처음이자 마지막 KOI 본선... 준비를 좀 덜 했다고 하더라도, 실력이 좀 줄었다고 하더라도 안할 수는 없었다. 나름 역대 koi 2차 문제들을 3개 빼고 다 풀기도 하는 등, 열심히 준비를 했다. 긴장되는 마음가짐을 최대한 억누르려고 했고, 나에게 크게 중요한 대회는 아니라는 마인드 컨트롤을 하였다. 사전 준비 대회는 1시 30분에 시작이었고, 1시부터 준비할 수 있는 시간을 가졌다. 그런데 키보드가 너무 불편했다. 내 노트북 키보드가 굉장히 특이한 형태인데, 그 키보드에 익숙해져버려서, 다른 키보드에 손이 잘 안익게 되었다. 앞으로는 항상 키보드를 들고 다닐까 생각을 하고 있다. 아무튼 스페이스바가 아예 안되는 컴퓨터가 있어 옆 컴퓨터에서 시험을 보게 되었다. 연습 문제는 예선 2교시 1번..

8~9 월 PS 및 블로그 관련 잡다한 일지

Codeforces 다시 떡락한뒤에... div1에서는 올리지 못했다. #668 div1이 굉장히 아쉬웠다. /2 만 안했어도 D를 푸는 것이었기 때문에 진짜 쭉 떡상할 수 있었다. 하지만 실패했다. 2000 초반이었지만 한동안 div1을 볼 수가 없었다. only div2만 한가득. 최대한 존버를 하다가 비장의 한 번을 터트려서 쭉 올라가기로 마음먹었다. #669에서 그 컨트롤을 실패해서 그냥 망해버릴뻔 했다. 2110 박제가 될 뻔 했으나 환상적인 D 시스페일로 인해서 2050 쯤에 세워놓을 수 있었다. 그 후 #670에서 38등 떡상에 성공! 후기글은 여기서 볼 수 있다. 현재 레이팅은 2181. 한국 60등, 세계 1700등대, 교내 5등을 기록했다. BOJ 1000문제 달성!!!! 요즘 정말 꾸..

교내 경시 대비 #2

교내 경시를 대비하여 가볍게 돈 셋을 정리하는 글이다. Blackking26과 함께 7월 15일 19시 부터 20시 40분까지 100분 간 진행했다. 지난번 문제는 너무 쉽기도 하고, 구현 연습이 절실했기 때문에 문제는 골드 하위 랜덤 5문제와 실버 상위 구현 태그가 달린 5문제를 넣어서 10문제로 설정했다. 결과는 10문제 중에 7문제를 풀었다. 비 구현 4문제와 구현 3문제이다. A. 주기문으로 바꾸기 주기로 인해서 같은 글자가 되어야 하는 애들끼리 묶어서 생각하자. 당연히 가장 많은 글자를 따라 가는 것이 이득이다. 따라서 주기의 같은 위치에 있는 글자끼리 묶어서 가장 많은 수의 글자가 아닌 글자가 몇 개인지 세기만 해서 더하면 끝이다. B. 파이프 옮기기 1 아무리 봐도 딱봐도 DP. 어떤 칸에 ..

Monotone Queue Technique

이 글에서는 Monotone Queue Technique(모노톤 큐 테크닉) 에 대해서 가볍게 다뤄보려고 한다. DP에서 사용하는 Monotone Queue Optimization에 대해서 알고 싶다면 이 글을 참고하자. What is Monotone Queue? Monotone Queue는 Monotone 과 Queue의 합성어이다. 즉 큐는 큐인데 단조로운 Queue라는 것이다. 즉, 어떠한 알고리즘을 토대로 큐를 단조롭게 관리하는 것이다. 당연히 큐를 단조롭게 관리함으로써 무엇인가를 얻을 수 있을 것이다. Problem 예시 문제로 BOJ 11003 최솟값 찾기를 가지고 왔다. 전체 n개의 숫자내에 속한 임의의 크기 k인 구간에 대해서 최솟값을 구하는 문제이다. Naive 하게 풀면 $O(NK)$,..

교내 경시 대비 #1

교내 경시를 대비하여 가볍게 돈 셋을 정리하는 글이다. Blackking26과 함께 7월 13일 19시 부터 20시 40분까지 100분 간 진행했다. 문제는 S5~G5 한글 디스크립션 랜덤문제 13문제를 뽑았다. 100분 동안 11문제를 풀었다. 실버라서 그런지 무난하게 빨리 풀렸다. 사실 좀 많이 쉬웠다. 앞으로는 난이도를 조금 올리는 게 좋을 것 같다. A. 삼삼한 수 어떤 수를 3진법으로 나타냈을 때 2가 있는지 확인하자. 예외 처리로 0을 신경써주어야 한다. 정말 간단하게 풀리는 문제 B. 텔레포트 어떤 두 도시를 가는 방법은 그냥 가거나, 출발지 -> 특별한 도시 -> 텔레포트 -> 목적지로 가는 두 가지 방법이 있다. 두번째 방법에서 텔레포트 비용은 항상 일정하기 때문에 모든 도시에 대해서 가..

6~7 월 PS 및 블로그 관련 잡다한 일지

6~7월 두 달 동안 무엇을 하였는지, 앞으로 무엇을 할 것인지를 정리하고, 또 다짐하는 정기 컨텐츠이다. Codeforces 2등. 대기록. 이제 다시 코포를 열심히 할 때가 온 것 같다. 코포를 너무 하나도 안했다. 거의 두 달 가까이 코포를 쉬었고, 이제 다시 시간이 많을테니 열심히 달려봐야겠다. 2등 코포 글은 여기서 볼 수 있다. BOJ 중간고사와 기말고사가 거의 붙어있어서 6~7월에 시험을 두개나 보게 되었다. 그래서 전체적으로 문제 수가 많지 않다. 지난번 이후로 약 63개 정도 늘었으며 하루에 딱 한 문제씩 푼 꼴이다. 근데 실버 - 골드 문제를 너무 많이 풀어서 다음과 같이 보이는 것이다. 실제로 70문제를 푸는 데 걸린 시간을 다 합치면 얼마 안 될 것이라고 생각한다. Solved.ac..