블로그

  • 50자리 수 100개 더하기

    원문 : http://projecteuler.net/index.php?section=problems&id=13

    100개의 50자리 숫자가 있다. 그 합을 구하여, 그중 왼쪽에서부터 10개 자리의 값을 계산해라.

    Work out the first ten digits of the sum of the following one-hundred 50-digit numbers.

    37107287533902102798797998220837590246510135740250

    46376937677490009712648124896970078050417018260538

    74324986199524741059474233309513058123726617309629

    91942213363574161572522430563301811072406154908250

    23067588207539346171171980310421047513778063246676

    89261670696623633820136378418383684178734361726757

    28112879812849979408065481931592621691275889832738

    44274228917432520321923589422876796487670272189318

    47451445736001306439091167216856844588711603153276

    70386486105843025439939619828917593665686757934951

    62176457141856560629502157223196586755079324193331

    64906352462741904929101432445813822663347944758178

    92575867718337217661963751590579239728245598838407

    58203565325359399008402633568948830189458628227828

    80181199384826282014278194139940567587151170094390

    35398664372827112653829987240784473053190104293586

    86515506006295864861532075273371959191420517255829

    71693888707715466499115593487603532921714970056938

    54370070576826684624621495650076471787294438377604

    53282654108756828443191190634694037855217779295145

    36123272525000296071075082563815656710885258350721

    45876576172410976447339110607218265236877223636045

    17423706905851860660448207621209813287860733969412

    81142660418086830619328460811191061556940512689692

    51934325451728388641918047049293215058642563049483

    62467221648435076201727918039944693004732956340691

    15732444386908125794514089057706229429197107928209

    55037687525678773091862540744969844508330393682126

    18336384825330154686196124348767681297534375946515

    80386287592878490201521685554828717201219257766954

    78182833757993103614740356856449095527097864797581

    16726320100436897842553539920931837441497806860984

    48403098129077791799088218795327364475675590848030

    87086987551392711854517078544161852424320693150332

    59959406895756536782107074926966537676326235447210

    69793950679652694742597709739166693763042633987085

    41052684708299085211399427365734116182760315001271

    65378607361501080857009149939512557028198746004375

    35829035317434717326932123578154982629742552737307

    94953759765105305946966067683156574377167401875275

    88902802571733229619176668713819931811048770190271

    25267680276078003013678680992525463401061632866526

    36270218540497705585629946580636237993140746255962

    24074486908231174977792365466257246923322810917141

    91430288197103288597806669760892938638285025333403

    34413065578016127815921815005561868836468420090470

    23053081172816430487623791969842487255036638784583

    11487696932154902810424020138335124462181441773470

    63783299490636259666498587618221225225512486764533

    67720186971698544312419572409913959008952310058822

    95548255300263520781532296796249481641953868218774

    76085327132285723110424803456124867697064507995236

    37774242535411291684276865538926205024910326572967

    23701913275725675285653248258265463092207058596522

    29798860272258331913126375147341994889534765745501

    18495701454879288984856827726077713721403798879715

    38298203783031473527721580348144513491373226651381

    34829543829199918180278916522431027392251122869539

    40957953066405232632538044100059654939159879593635

    29746152185502371307642255121183693803580388584903

    41698116222072977186158236678424689157993532961922

    62467957194401269043877107275048102390895523597457

    23189706772547915061505504953922979530901129967519

    86188088225875314529584099251203829009407770775672

    11306739708304724483816533873502340845647058077308

    82959174767140363198008187129011875491310547126581

    97623331044818386269515456334926366572897563400500

    42846280183517070527831839425882145521227251250327

    55121603546981200581762165212827652751691296897789

    32238195734329339946437501907836945765883352399886

    75506164965184775180738168837861091527357929701337

    62177842752192623401942399639168044983993173312731

    32924185707147349566916674687634660915035914677504

    99518671430235219628894890102423325116913619626622

    73267460800591547471830798392868535206946944540724

    76841822524674417161514036427982273348055556214818

    97142617910342598647204516893989422179826088076852

    87783646182799346313767754307809363333018982642090

    10848802521674670883215120185883543223812876952786

    71329612474782464538636993009049310363619763878039

    62184073572399794223406235393808339651327408011116

    66627891981488087797941876876144230030984490851411

    60661826293682836764744779239180335110989069790714

    85786944089552990653640447425576083659976645795096

    66024396409905389607120198219976047599490197230297

    64913982680032973156037120041377903785566085089252

    16730939319872750275468906903707539413042652315011

    94809377245048795150954100921645863754710598436791

    78639167021187492431995700641917969777599028300699

    15368713711936614952811305876380278410754449733078

    40789923115535562561142322423255033685442488917353

    44889911501440648020369068063960672322193204149535

    41503128880339536053299340368006977710650566631954

    81234880673210146739058568557934581403627822703280

    82616570773948327592232845941706525094512325230608

    22918802058777319719839450180888072429661980811197

    77158542502016545090413245809786882778948721859617

    72107838435069186155435662884062257473692284509516

    20849603980134001723930671666823555245252804609722

    53503534226472524250874054075591789781264330331690

    포럼 가보니까 C, 파이썬, 루비, 펄, 자바, 어셈블리…

    아주 많은 언어들이 이 문제를 푸는데 사용되었다.


    나의 풀이 보기



    쉽다면 쉽고 어렵다면 어려운, 그런 문제였다.

    64비트 Unsigned Long 정수를 쓰면 42조까지 표현이 되는데, 그래봐야 12자리다. 그래서 저걸 다른 언어로 계산하려면 무한 자리수 계산기를 만들어야 한다.

    음…

  • 발바닥에 눈썹이 박혔다

    예전에 오른손 검지 손톱 밑에 머리카락이 박혔던 이래…

    어제 하루종일 왼쪽 발바닥이 따끔거려서 양말을 벗고 살펴봤더니, 발바닥의 굳은살 사이로 눈썹이 박혀 들어가 있었다.

    뭐야, 이거.

  • 4년 후에도

    4년 후에, 이명박 정부가 국정을 망쳤다고 가정하자. (가정이다. 추측도, 예측도, 사실도 아닌, 단지 가정)

    이명박 정부는 노무현 정권 때문에 국정 수행에 차질이 빚어졌다고 말할 것인가?

  • 공인인증 제도에 대한 오픈웹의 입장

    *댓글을 달아서 의견을 주시면 오픈웹쪽에도 전달하도록 합니다.*이 글은 CC라이센스에 의해 복사하여 왔습니다.

    1. “보편적 역무”

    공인인증역무는 전기, 수도, 가스 등과 같은 수준의 공공성과 필수성이 있는 서비스이므로 공급자가 임의로 (자유로운 사업판단에 기하여) 공급을 거부하지 못합니다.

    전기사업법 제14조 (“정당한 사유 없이 전기의 공급을 거부하여서는 아니된다”)

    수도법 제39조 제1항 (“수돗물의 공급을 원하는 자에게 정당한 이유 없이 그 공급을 거절하여서는 아니 된다”)

    전기통신사업법 제3조 제1항 (“정당한 사유 없이 전기통신역무의 제공을 거부하여서는 아니된다”)

    도시가스사업법 제19조 (“정당한 사유 없이 … 가스사용자에게 가스의 공급을 거절하거나 공급이 중단되게 하여서는 아니 된다”)

    전자서명법 제7조 제1항 (“정당한 사유 없이 인증역무의 제공을 거부하여서는 안된다”)

    전자서명법 제15조 제1항 (“공인인증기관은 공인인증서를 발급받고자 하는 자에게 공인인증서를 발급한다”)

    2. 금융결제원은 “가입자설비 제공 의무”가 있습니다.

    1심 법원도 금결원에게 가입자설비 제공 의무가 있다는 점은 인정하였습니다: “전자서명법 상 공인인증기관의 공인인증역무 제공 업무에는 가입자 설비를 제공할 의무도 포함된다고 할 것이다”(판결서 제8면)

    가입자설비가 없으면 인증서를 발급받지도 못하고 사용하지도 못합니다. 따라서 공인인증기관이 가입자설비를 제공하지 않아도 된다는 주장은 근거가 없습니다. 전자서명법령은 가입자설비를 감독관청이 심사하도록 규정하고, 실제로 가입자설비에 대한 심사도 이루어졌습니다.

    제공되지 않아도 되는 가입자설비를 심사할 이유는 없습니다.

    3. 등록대행기관은 심사받은 가입자 설비를 사용해야 합니다.

    가입자설비는 등록대행기관(RA)을 통하여 가입(신청)자에게 배포됩니다. 등록대행기관이 아무 설비나 멋대로 제공해도 된다면, 가입자설비를 심사받도록 정해둔 법규정이 무의미하게 됩니다. 모든 가입자는 등록대행기관을 통하여 배포되는 가입자설비를 사용하여 공인인증서 발급 신청을 하고 있습니다.

    공인인증기관은 자신의 공인인증서가 “적법하게 심사받은” 가입자설비를 사용하여 발급되도록 해야 할 의무가 있습니다: “공인인증기관은 공인인증기관 지정시 심사를 받은 시설 및 장비를 이용하여 공인인증업무를 수행하여야 한다.”(전자서명 인증업무 지침 제24조 제1항)

    4. 공인인증기관은 ‘이용자(웹서버)’에게 “쉬운 수단”을 제공해야 할 의무가 있습니다.

    전자서명법은 ‘가입자’와 ‘이용자’를 구분하고 있습니다. 가입자는 공인인증기관으로부터 인증서를 발급받은 자를 말하며, 가입자와 전자적으로 거래하는 상대방이 ‘이용자’의 지위에 놓이게 됩니다(제25조의 2 및 제26조 참조).

    인터넷 상에서 이루어지는 전자서명거래의 경우, ‘이용자’는 웹서버이고, ‘가입자’는 웹서버에 접속하여 전자서명거래를 하는 고객입니다. 흔히 은행, 카드사 등이 이용자(웹서버)의 지위에 있게 되지만, 전자서명거래는 금융거래에만 한정된 것이 아니므로, 어떤 웹서버라도(관공서, 법원, 개인기업, 학교, 개인 블로그 등 무한히 다양한 웹서버들이) ‘이용자’가 될 수 있습니다.

    “공인인증”서비스는 말 그대로 모든 이용자가 이용할 수 있어야 하는 서비스 입니다. 따라서 법 제22조의2 제2항은 이용자(웹서버)가 공인인증서에 의하여 일정한 사항을 확인할 수 있도록 “쉬운 수단”을 제공할 의무를 공인인증기관에게 부과하고 있습니다.

    가입자설비를 제공하지 않거나, 가입자설비를 이용자(웹서버)가 이용하는데 필요한 정보(이용 방법)을 알려주지 않으면, 이용자(웹서버)가 공인인증서비스를 이용하는데 필요한 “쉬운 수단”이 제공되지 않은 것입니다.

    수백, 수천개에 달하는 무수한 이용자(웹서버)가 공인인증용 가입자설비를 제각각 만들어서 사용해야 한다는 금융결제원의 주장은 근거가 없습니다.

    5. 파이어폭스 사용자는 국내에도 이미 7% 이상에 이르고 있습니다.

    국내의 종합포탈 사이트에 접속하는 사람들의 웹브라우저 분포 비율은 1년 전에 이미 다음과 같은 실정이었습니다:

    수도, 가스, 전기 등과 같은 수준의 공공성과 필수성이 있는 공인인증역무를 공인인증기관이 ‘자유로운 사업판단으로’ 인터넷 이용인구의 7%가 넘는 국민들에게 거부해도 무방하다는 주장은 옳지 않습니다.

  • 차라리 망해라

    음…일단 망해봐야 정신을 차리겠지. 물론 그 와중에서도 책임회피하는 인간들이 부지기수겠지만. 그리고 그 속에서 죽는 사람들은 힘없고 약한 사람들이겠지.

    근데 구성원들의 특성상, 지도자가 개판을 쳐도 딱히 망할 것 같지 않다는 게 결정적인 문제다. 그럼 그 지도자들은 그 위기속에서 집단을 구해낸 것이 자신이고, 자신이 구세주인양 행세하겠지. 그꼴은 정말 보기 싫다. 같이 망하자.

    지금은 나만 우울한 것도 아니다. 당신만 우울한 것도 아니다. 이 사회 전체가, 이 시대 전체가 우울하다.

  • 요새 눈에 들어오는 학문 분야

    Lattice Gauge Theory : 원래부터 관심이 있었던 부분이다. 나희창 선배님이 워낙에 세게 떡밥을 던지고 가셔서. 전산 물리학 분야기 때문에 입자 물리 이론을 못하더라도 전산 과학 쪽에서 직장을 구할 수도 있다고 한다. 물론 우리나라에서 직장 구하는 건 좀 곤란한 분야.

    Financing Physics : 제대로 하기만 하면 돈은 긁어모을 것 같은 분야. 하지만 정통 물리학 문제를 풀 일은 없다.

    Astrobiology : 우주생물학(?) 최근 재밌을 것 같은 주제를 발견했다. 다만, 이거 전공한 후에는 우리나라에서 직장 구하려면 대단한 애로사항이 꽃피게 될 듯.

    Theoretical Solid State Physics : 입자 한다고 하면 고체에는 관심이 없는줄 알지만, 사실 난 물리학이라면 다 좋아한다. 그럭저럭 할만하고, 한국에서 직장 구하는 것도 어렵긴 하지만 불가능하진 않은 분야.

    …돈 안되는 것들만 잔뜩이다.

    공부해 보고 싶은 주제들

    General Relativity : 3년 전부터 공부해 보고 싶었지만, 온갖 이유로 아직도 제대로 보지 못했다.

    Lie Algebra : 어디에 쓰이건 말건 상관 없이, 이건 그 자체고 흥미로운 수학이다.

    Feynman’s Path Integral : 아주 다양한 곳에 사용된다. 심지어 금융공학에도 나온다. -_-;

  • 선택의 기로에서

    며칠전, 학교에 찾아가서 대학원때 지도교수님을 만나뵈었다. 내 인생에 가장 큰 영향을 주신 분이기도 하고, 당연히 앞으로도 뗄래야 뗄 수가 없는 관계를 갖게 된 분이다.

    지난 2월달에 난 교수님과 같이 하던 연구주제를 개인적인(말하기 좀 곤란한 일신상의 이유로) 그만 둔 적이 있는데, 그때 교수님께서 적잖이 많이 실망 하셨나보다.

    내가 물리를 그만 둘 것으로 생각하신다고 내게 말씀하셨다. 물리 교육이 낫지 않겠나 하는 말씀도 하셨다.

    가장 충격적인 것은, 내가 나 스스로에게 선택의 기로에 섰을 때 모질지 못하다는 느낌을 받으셨다는 점이다. 사실 정서적인 충격은 그다지 크지 않았다. 지난 10년간 내 선택은 항상 그래왔으니까. 이제 조금씩 나 자신에게 모질게 되어가고 있는 중이고, 각오를 다지는 중이고, 앞으로를 위해서 희생할 것들을 정리하는 중이다.

    지금보다 훨씬 더 독한 놈이 되지 않으면 성공할 수 없다는 생각을 했다. 지금까지의 나, 그리고 현재의 나는 마음이 많이 나약하다. 머리 좋은거 하나만 믿고 아직까지는 버텨 왔었다. 하지만, 아무리 작게 봐도 내 주변의 현실은 너무나 빠른 속도로 변화하고 있다. 내가 갖고 있는 밑천은 거의 다 떨어졌다고 봐도 좋다. 지금부터는 노력이 필요한 시점이다.

    지금까지는 스스로에게 변명을 많이 하고, 스스로를 많이 용서해 왔다. 그렇게 하지 않으면 버틸 수 없었고, 그렇게 해도 먹고 살만 했으니까. 하지만 내가 갖고 있는 장래희망은 아직 현실이 아니고, 그걸 현실로 만들려면 아직도 한참 남았다. 앞으로 다시 15년간은 있는 힘껏 노력하지 않으면 안되는 것이다. 그마저도 15년 중 초반 5년은 장래희망과는 아무 관련 없는 엉뚱한 일을 하면서 버텨야만 한다.

    비교적 어릴 때에는 어떤 선택을 하더라도 되돌릴 수 있는 여유가 있었다. 물론 지금도 그 여유가 없는 것은 아니다. 꿈을 포기하는 것은 아주 쉽고, 지금의 현실에서 남들이 성공이라고 부르는 것을 얻어내는 것은 나의 꿈을 이루는 것 보다는 훨씬 쉬운 일이다.

    스스로를 일부러 힘들게 할 생각은 전혀 없지만, 선택이 필요할 때 결과가 두려워서 도전하지 못하는 것도 멍청한 짓이다.

    그건 그렇고…

    교수님께서 내가 굉장히 돌아서 가고 있다고 말씀하셨는데, 딱히 늦은 건 아니다. 최적의 경우와 비교해도 1년에서 1년 반 정도 늦게 유학을 가게 되는 것이니까, 딱히 늦지는 않다. 우리나라에서 남자가 29살에 외국 대학원으로 유학갈 수 있다면 그건 평범한거 아닌가?

    (대학 4년 + 군대 2년 + 휴학 또는 대학원 2년 + 기타 영어시험 준비 1년 = 29살)

  • 티스토리 버그 또는 기능


    버그인지 기능인지 모르겠는데…

    글이 비공개 상태일 때에도 그 안에 첨부된 첨부화일은 그 글의 링크만 알면 받을 수 있다.

    음…기능일까 버그일까 모르겠다.

    기능이라면?

    티스토리를 무료 자료실로 쓸 수도 있다. -_-;

    버그라면?

    고쳐야지…

  • 오픈웹 판결문 전문

    한시간동안 타이핑 했더니 손가락이 조금 뻐근하다. -_-;

    http://www.openweb.or.kr

    판결문은 첨부화일 참고…