앞선 문제중 6번에 대한 풀이에 문제가 생겨서 우선 14번부터 올린다.
우선 문제화면을 살펴보자. 특이점 없이 굉장히 평범하다.
아무값이나 넣고 버튼을 눌러보면 wrong이라는 알림이 뜬다.
아마 답에 맞는 값을 입력해야 풀리는 문제 같다.
가장 먼저 개발자 도구를 켜서 분석코드에 대한 분석을 해보자.
이번 문제는 코드 구조가 상당히 간단하다.
<html>
<head>
<title>Challenge 14</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
</style>
</head>
<body>
<br><br>
<form name=pw>
<input type=text name=input_pwd>
<input type=button value="check" onclick=ck()>
</form>
<script>
function ck(){
var ul=document.URL;
ul=ul.indexOf(".kr");
ul=ul*30;
if(ul==pw.input_pwd.value) { location.href="?"+ul*pw.input_pwd.value; }
else { alert("Wrong"); }
}
</script>
</body>
</html>
우선 html 코드는 form에 대한 코드 뿐이다.
onclick, 즉 클릭 시에 하단의 js 코드의 ch() 함수를 실행한다.
function ck(){
var ul=document.URL;
ul=ul.indexOf(".kr");
ul=ul*30;
if(ul==pw.input_pwd.value) { location.href="?"+ul*pw.input_pwd.value; }
else { alert("Wrong"); }
}
이 코드를 간단하게 분석해보자면,
(1) ul
을 정의 할 때 현재 페이지의 주소를 갖고 온다.
(2) ul
값을 ul
중에서 .kr 의 인덱스 값을 불러온다.
(3) ul
값에 30을 곱한 값을 지정해준다.
(4) form 에서 입력 받은 값을 ul
과 비교하여 맞다면 주소를 ?ul*pw.input_pwd.value
로 이동시킨다.
해당 코드에 대해서는 고민할 필요 없이 console 창으로 넘어가 코드를 변형시킨 후, ul*pw.input_pwd.value
의 값을 구해보자
여기서 코드를 간결하게 하기 위해서 조금만 생각해보자면, ul*pw.input_pwd.value
의 값은 결국 ul
과 pw.input_pwd.value
의 값이 같을 때 계산되기 때문에 ul의 제곱값
을 구하면 된다.
function ck(){
var ul=document.URL;
ul=ul.indexOf(".kr");
ul=ul*30;
console.log(ul**2);
}
ck();
콘솔에 넣고 실행 시키면 결과 값이 291600
이 나온다.
그럼 웹페이지 주소를 다음과 같이 수정하면 문제가 해결된다.
이번 문제는 비교적 어렵지 않은 난이도에 속했다. 현재 작성중인 글은 모두 5~10점 수준의 문제이니 어렵지 않게 해결 가능하다.
다음 문제는 15번이다. 15번도 재미있는 문제이니 기대해도 좋다.