n번째 삼각수는 tn = ½ n (n + 1) 이라는 식으로 구할 수 있는데, 처음 10개는 아래와 같습니다.
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
어떤 영어 단어에 대해서, 각 철자의 알파벳 순서(A=1, B=2, ..., Z=26)를 모두 더한 값을 '단어값'이라 부르기로 합니다.
예를 들어 'SKY'의 단어값은 19 + 11 + 25 = 55가 되는데, 이것은 우연히도 t10과 같습니다.
이렇게 어떤 단어의 단어값이 삼각수일 경우에는 이 단어를 '삼각단어'라 부르기로 합니다.
약 16KB의 텍스트 파일 words.txt에는 2000개 정도의 영어 단어가 수록되어 있습니다.
이 중에서 삼각단어는 모두 몇 개입니까?
Click
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
어떤 영어 단어에 대해서, 각 철자의 알파벳 순서(A=1, B=2, ..., Z=26)를 모두 더한 값을 '단어값'이라 부르기로 합니다.
예를 들어 'SKY'의 단어값은 19 + 11 + 25 = 55가 되는데, 이것은 우연히도 t10과 같습니다.
이렇게 어떤 단어의 단어값이 삼각수일 경우에는 이 단어를 '삼각단어'라 부르기로 합니다.
약 16KB의 텍스트 파일 words.txt에는 2000개 정도의 영어 단어가 수록되어 있습니다.
이 중에서 삼각단어는 모두 몇 개입니까?
삼각함수 Tn = n*(n+1)/2
2*Tn = n*(n+1)
여기서 2*Tn 의 제곱근의 값을 내림 한 값이 n이 될거라는 것을 추측할 수 있다.
즉. ceil(sqrt(2Tn)) = k 이라고 할때
k*(k+1)/2 = Tn 일 경우 해당 수는 삼각함수입니다.
2*Tn = n*(n+1)
여기서 2*Tn 의 제곱근의 값을 내림 한 값이 n이 될거라는 것을 추측할 수 있다.
그리고 나머지는 22번 문제를 수정하여 완성.
<script language="Javascript" type="text/javascript"> /* 삼각함수 판단 */ function isTriangular(Tn){ var sqrtTn = parseInt(Math.sqrt(2*Tn)); return (Tn == sqrtTn*(sqrtTn+1)/2); } /* 텍스트의 점수를 더한 값이 삼각함수인지 체크하여 count. */ function p042(values){ var names = values.split(','); var cnt = 0; for(var i=0; i< names.length; i++){ var sum = 0; for(var j=1; j< names[i].length-1; j++) sum += names[i].charCodeAt(j)-64; if(isTriangular(sum)) cnt ++; } alert(cnt); } </script>아래는 파일 접근을 위한 함수.. 아래 함수에서 파일을 읽어서 p042함수를 실행 시킵니다.
<script language="Javascript" type="text/javascript"> /* 파일을 읽어서 함수 실행. */ function getData(url){ // 기본적인 변수 선언 var xmlhttp = null; if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } // code for IE7+, Firefox, Chrome, Opera, Safari else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } // code for IE6, IE5 // URL 주소의 값을 가져온다 xmlhttp.open("GET", url, true); xmlhttp.setRequestHeader("Cache-Control", "no-cache"); xmlhttp.setRequestHeader("Pragma", "no-cache"); // 값을 가져 왔을경우 호출할 메소드를 선언 xmlhttp.onreadystatechange = function() { // readyState 가 4 고 status 가 200 일 경우 올바르게 가져옴 if(xmlhttp.readyState==4){ if (xmlhttp.status == 200){ //F if (xmlhttp.responseText != null) // 지정된 함수 실행. p042(xmlhttp.responseText); else alert("Failed to receive RSS file from the server - file not found."); } else alert(responseText = "Error code " + xmlhttp.status + " received: " + xmlhttp.statusText); } } xmlhttp.send(null); } </script>
댓글 없음:
댓글 쓰기