목록전체 글 (180)
Iriton's log
문제 (A+B)%C는 ((A%C) + (B%C))%C 와 같을까? (A×B)%C는 ((A%C) × (B%C))%C 와 같을까? 세 수 A, B, C가 주어졌을 때, 위의 네 가지 값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 A, B, C가 순서대로 주어진다. (2 ≤ A, B, C ≤ 10000) 출력 첫째 줄에 (A+B)%C, 둘째 줄에 ((A%C) + (B%C))%C, 셋째 줄에 (A×B)%C, 넷째 줄에 ((A%C) × (B%C))%C를 출력한다. 풀이 A, B, C를 한 줄에 입력받으니 공백을 기준으로 나눠서 변수에 저장해야 한다. 이때, map(), input(), split() 을 사용할 것이다. map(function, iterable) : *iterable 객체(list, dict,..
소스코드를 볼 수 있는 하이퍼 링크가 첨부되어 있다. 당연히 들어가 준다. solve(26)에 해당하는 조건문을 보니 id가 admin이 되어야 한다. 바로 위의 두 줄을 보면 id에 들어가는 값은 urldecode함수를 거친다. 그리고 admin이면 안 된다. (직접적으로 ?id=admin을 쓰면 안 된다는 뜻이다.) 디코딩한 값이 admin이어야 하는 것 같다. 즉, admin을 인코딩한 값을 알면 된다. 하지만 순순히 문제가 풀리지 않았다. 찾아 보니, 브라우저와 php는 서로 데이터를 교환할 때 자동으로 인코딩과 디코딩을 한다고 한다. 이 점을 고려해서 admin을 두 번 인코딩해야 한다. 인코딩은 사이트를 통해 간단하게 할 수 있으므로 패스.
초기화면은 위와 같이 검은 화면에 별이 떠 있다. 힌트를 얻을 게 없으니 바로 소스코드를 확인해 봤다. 먼저, do it! 이라는 주석을 발견했다. 주석과 같은 줄에 해당하는 조건문은 cd라는 매개변수가 124가 되어야 한다고 명시되어 있다. mv함수는 onkeypress 즉, 키보드의 키가 눌렸을 때 호출된다. 따라서, 키보드의 아스키 코드가 매개변수 cd로 전달됨을 알 수 있다. 아스키 코드를 참고하면, wasd키로 별이 이동하고 |(파이프)키를 통해 문제가 해결된다. * 참고로 별 이동 후 파이프 키를 입력하면 문제가 풀리지 않아서, 새로고침이 필요하다.
view source 텍스트에 링크가 첨부되어 있었다. 해당 링크를 타고 들어가면 아래와 같은 소스코드가 뜬다. 먼저, 풀이에 힌트를 주는 solve 함수를 찾았다. 해당 줄에서는 user_lv 쿠키 값이 3이 넘어야 된다는 조건이 붙어 있었으며, 바로 윗 줄에서는 user_lv 쿠키 값이 4이상일 경우 user_lv에 1을 대입한다고 나와 있었다. 따라서, 3 초과와 동시에 4 미만인 수를 임의로 지정하여 3.x 값을 쿠키 값에 넣어야 한다. f12키를 누른 뒤, Application-Storage-Cookies 에서 user_lv에 3.5를 입력했다. 그럼 해결 완료. 이미 풀었던 문제라 already solved 팝업이 뜬다.