목록분류 전체보기 (186)
Iriton's log
문제 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 또, 1번부터 N번까지 번호가 적혀있는 공을 매우 많이 가지고 있다. 가장 처음 바구니에는 공이 들어있지 않으며, 바구니에는 공을 1개만 넣을 수 있다. 도현이는 앞으로 M번 공을 넣으려고 한다. 도현이는 한 번 공을 넣을 때, 공을 넣을 바구니 범위를 정하고, 정한 바구니에 모두 같은 번호가 적혀있는 공을 넣는다. 만약, 바구니에 공이 이미 있는 경우에는 들어있는 공을 빼고, 새로 공을 넣는다. 공을 넣을 바구니는 연속되어 있어야 한다. 공을 어떻게 넣을지가 주어졌을 때, M번 공을 넣은 이후에 각 바구니에 어떤 공이 들어 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N (1 ≤ N ≤ 10..
문제 오늘은 혜아의 면접 날이다. 면접 준비를 열심히 해서 앞선 질문들을 잘 대답한 혜아는 이제 마지막으로 칠판에 직접 코딩하는 문제를 받았다. 혜아가 받은 문제는 두 수를 더하는 문제였다. C++ 책을 열심히 읽었던 혜아는 간단히 두 수를 더하는 코드를 칠판에 적었다. 코드를 본 면접관은 다음 질문을 했다. “만약, 입출력이 N바이트 크기의 정수라면 프로그램을 어떻게 구현해야 할까요?” 혜아는 책에 있는 정수 자료형과 관련된 내용을 기억해 냈다. 책에는 long int는 4바이트 정수까지 저장할 수 있는 정수 자료형이고 long long int는 8바이트 정수까지 저장할 수 있는 정수 자료형이라고 적혀 있었다. 혜아는 이런 생각이 들었다. “int 앞에 long을 하나씩 더 붙일 때마다 4바이트씩 저장..
보호되어 있는 글입니다.
문제는 이러하다. 우선 문제 파일을 다운로드 받고 링크에 접속해 보았다. 초기 화면이다. Upload My Memo에 들어가면 이런 식으로 파일 이름과 내용을 저장하여 업로드 할 수 있다. 혹시나 해서 flag.py의 이름으로 업로드 해보았지만 될 리가 없다. 어떻게 flag.py를 다운 받지 싶어서 문제 파일에 있는 코드를 살펴 보았다. upload 하면 /upload 파일에 저장하고 read 하면 upload 파일에서 불러 오나보다. 근데 해당 조건문에서는 수상하게 파일명에서 ..이 사용되는 걸 막는다. ..은 상위폴더를 뜻하는데 그럼 flag.py가 upload파일이 아닌 상위 폴더에 있어서 막나? 싶은 생각이 든다. 파일명에 ../flag.py를 입력하고 업로드 하면 코드 내용대로 bad... 가..
문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 풀이 초기 코드 (시간 초과) #include #include using namespace std; int main() { int N, M; cin >> N >> M; vectorarr(N+1); arr[0] = 0; for (int i = 0; i > arr[i]; for (int ..
문제에서 힌트를 다 주고 있다. 우선 파일을 다운 받자. 압축을 풀면 이렇게 파일이 많은데 이 중에서 최종 결과물으로 보이는 project만 열어 봤다. 평범한 웹 페이지다. 문제에서 개발자 툴을 사용하라 했으니 f12를 누른다. 개발자 모드로 진입하자마자 보이는 Search flag 형식을 검색해 보면 되지 않을까? 너무 쉽게 정답...
문제 파일을 다운로드 하면 html 파일이 있다. vscode로 열어도 되고 메모장으로 열어도 되는데 난 그냥 메모장으로 열었다. 문제를 풀다 보니 두 가지의 풀이법이 있어서 두 가지 다 작성하려고 한다. 1. 코드 변환 (While문) 메모장을 열면 엄청 긴 코드가 보이지만, 이 중에서 필요한 건 클릭할 때마다 카운트 되게 하는 함수이다. 10,000번 클릭할 수 없으니 코드를 수정해 줘야 하기 때문이다. 해당 코드는 아래와 같다. 코드를 대충 읽고 '어 그럼 카운트를 1씩 증가하지 말고 9999번씩 증가 시키면 되겠네' 라는 생각을 했다. counter += 9999로 바꾼 뒤 실행하면 flag가 암호화 되어서 출력된다. 그럼 반복문을 통해서 내부적으로 매크로를 돌려야 할 것이라 생각했다. 원래 코드..
첫 화면이다. nickname, comment, captcha가 있다. captcha 옆에는 정체불명의 문자열이 있다. 잘 모르겠으니 소스코드를 살펴 보자. ck() 함수를 보면 조건문이 여러개 있다. 조건문을 분석해 보면 id, cmt, capcha의 value가 공백이라면 focus 함수가 실행되고 리턴된다. focus 함수가 뭔지는 몰라도, 공백을 입력하면 안 되는 거 같다. captcha와 captcha_의 value가 달라도 focus 함수가 실행된다. 즉, nickname과 comment에는 공백이 아닌 값을 입력하고 captcha에는 captcha_.value와 동일한 값을 입력해야 한다. 해당 코드를 보면 captcha 라는 box에 입력한 값은 captcha이고 정체불명의 문자열이라 했던..