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>
댓글 없음:
댓글 쓰기