# cd /home/git
# mkdir test
# cd test
# git init
# git add .
# git status
# git commit -a -m "First Commit"

Posted by LucidasH

힙을 이용하면 다익스트라의 시간복잡도를 O(N^2) 이 아니라 O( (V+E)logE )에 구현이 가능하다.

C++ STL  priority queue 를 이용해서 구현한 Dijkstra algorithm.

 

'프로그래밍 > 알고리즘' 카테고리의 다른 글

An old Stone Game.  (0) 2011.09.19
2009 KOI 중등부 2번.  (0) 2011.04.01
Rebuilding Roads.  (2) 2011.03.17
Posted by LucidasH
function onlyNum(obj) {
    var val = obj.value;
    var  re = /^[0]+|\D*/gi;
    obj.value = val.replace(re, '');
}


input tag 의 onkeyup method 를 넣어줘서  0으로 시작하지 않는 양의정수를 입력하도록 Constraint를  걸어주는 코드.  
Posted by LucidasH
// aro_name 은 체크 할 글자수가 담긴 obj
// ari_max 는  제한 할 길이
// chk_byte 는 현재 입력한 글자수를 표기하기 위한 span object

function fc_chk_byte(aro_name, ari_max, chk_byte)
{
   var ls_str     = aro_name.value; // 이벤트가 일어난 컨트롤의 value 값
   var li_str_len = ls_str.length;  // 전체길이
   

   // 변수초기화
   var li_max      = ari_max; // 제한할 글자수 크기
   var i           = 0;  // for문에 사용
   var li_byte     = 0;  // 한글일경우는 2 그밗에는 1을 더함
   var li_len      = 0;  // substring하기 위해서 사용
   var ls_one_char = ""; // 한글자씩 검사한다
   var ls_str2     = ""; // 글자수를 초과하면 제한할수 글자전까지만 보여준다.

   for(i=0; i< li_str_len; i++)
   {
      // 한글자추출
      ls_one_char = ls_str.charAt(i);

      // 한글이면 2를 더한다.
      if (escape(ls_one_char).length > 4)
      {
         li_byte ++;
      }
      // 그밗의 경우는 1을 더한다.
      else
      {
         li_byte++;
      }

      // 전체 크기가 li_max를 넘지않으면
      if(li_byte <= li_max)
      {
         li_len = i + 1;
      }
   }
   
   // 전체길이를 초과하면
   
   chk_byte.innerText = "("+li_byte+"/"+li_max+"자)";

   
   if(li_byte > li_max)
   {
      alert( li_max + " 글자를 초과 입력할 수 없습니다. \n 초과된 내용은 자동으로 삭제 됩니다. ");
      ls_str2 = ls_str.substr(0, li_len);
      aro_name.value = ls_str2;
      chk_byte.innerText = "("+li_len+"/"+li_max+"자)";
   }
   
   aro_name.focus();   
}
Posted by LucidasH
<input type="text" style="ime-mode:disabled;" onKeyPress="return numbersonly(event, false)">


function numbersonly(e, decimal) {
    var key;
    var keychar;

    if (window.event) {
        key = window.event.keyCode;
    } else if (e) {
        key = e.which;
    } else {
        return true;
    }
    keychar = String.fromCharCode(key);

    if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13)
            || (key == 27)) {
        return true;
    } else if ((("0123456789").indexOf(keychar) > -1)) {
        return true;
    } else if (decimal && (keychar == ".")) {
        return true;
    } else
        return false;
}

 

출처 : http://forums.mozilla.or.kr/viewtopic.php?p=27386&sid=2bdee50d9b27286f7f0f133304dcfeeb 
Posted by LucidasH
function isNumber(s){ //문자, 숫자 판단 함수.
s += '';
s = s.replace(/^\s*|\s*$/g, '');
if(s==''|isNaN(s)){
alert("올바른 숫자를 입력하세요");
return false;
}
return true;
}


그냥 이걸 갖다 붙여 쓰자 .... 
Posted by LucidasH
http://poj.org/problem?id=1738

'프로그래밍 > 알고리즘' 카테고리의 다른 글

Dijkstra 다익스트라 ( V + E ) log E  (0) 2011.12.13
2009 KOI 중등부 2번.  (0) 2011.04.01
Rebuilding Roads.  (2) 2011.03.17
Posted by LucidasH


EditText 의 parent layout 이나 기타 상위 단에 아무 빈 레이아웃을 하나 만들고
그곳에 다음과 같은 속성을 xml에서 부여하자.


android:focusable="true"
android
:focusableInTouchMode="true"
Posted by LucidasH


BroadcastReceiver 나  Service 등과 같이 Activity 가 아닌 곳에서

실제 Activity의 context 를 가지고서  startActivity 등의 행동을 하기 위해서는  그냥 Intent를 만들어 전달하는 것이 아니라,   PendingIntent를 이용해야만 한다.


   Intent i = new Intent( context , PurposeActivity.class);
   PendingIntent pi = PendingIntent.getActivity(context, 0, i, PendingIntent.FLAG_ONE_SHOT );

   try {
        pi.send();
   } catch( Exception e ) {}

 와 같이 하면  할 수 있다.
Posted by LucidasH

JSON,  등등으로 외부로 부터 한글을 받아올 일이 있으면 항상 인코딩이 말썽입니다.

이 때  getBytes() 를 이용한 ,,, 등등 다양한 인코딩 변환이 있을 수 있는데 ....

애초에 받아온  Response를 받아올 때

InputStreamReader(InputStream in, String enc)

 

에서 enc parameter로 "euc-kr" 을 주면  해결 됩니다.

Posted by LucidasH
이전버튼 1 2 3 이전버튼

블로그 이미지
LucidasH

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함