여기 5천개 이상의 영문 이름들이 들어있는 46KB짜리 텍스트 파일 names.txt 이 있습니다 (우클릭해서 다운로드 받으세요).
이제 각 이름에 대해서 아래와 같은 방법으로 점수를 매기고자 합니다.
예를 들어 "COLIN"의 경우, 알파벳에 해당하는 숫자는 3, 15, 12, 9, 14이므로 합이 53, 그리고 정렬했을 때 938번째에 오므로 최종 점수는 938 × 53 = 49714가 됩니다.
names.txt에 들어있는 모든 이름의 점수를 계산해서 더하면 얼마입니까?
문제는 간단한 문제. 파일 I/O를 보려는 걸까요...
이제 각 이름에 대해서 아래와 같은 방법으로 점수를 매기고자 합니다.
- 먼저 모든 이름을 알파벳 순으로 정렬합니다.
- 각 이름에 대해서, 그 이름을 이루는 알파벳에 해당하는 숫자(A=1, B=2, ..., Z=26)를 모두 더합니다.
- 여기에 이 이름의 순번을 곱합니다.
예를 들어 "COLIN"의 경우, 알파벳에 해당하는 숫자는 3, 15, 12, 9, 14이므로 합이 53, 그리고 정렬했을 때 938번째에 오므로 최종 점수는 938 × 53 = 49714가 됩니다.
names.txt에 들어있는 모든 이름의 점수를 계산해서 더하면 얼마입니까?
<script> /* 넘겨받은 string 값을 정렬한뒤 점수 계산. */ function p022(values){ var names = values.split(','); names.sort(); var sum = 0; for(var i=0; i<names.length; i++) for(var j=1; j<names[i].length-1; j++) sum += (i+1) * (names[i].charCodeAt(j)-64); alert(sum); } </script>파일 접근은 이렇게... 하여 위에 함수가 호출 되도록..
<script> /* 파일을 읽어서 함수 실행. */ function getData(url,param, method, func){ // 기본적인 변수 선언 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(method, 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) // 지정된 함수 실행. func(xmlhttp.responseText); else alert("Failed to file - file not found."); } else alert("Error code "+xmlhttp.status+" received:"+xmlhttp.statusText); } } xmlhttp.send(param); } getData(url,null,"GET",p022); </script>
댓글 없음:
댓글 쓰기