BLOG main image
분류 전체보기 (52)
나의 이야기 (27)
컴퓨터 (23)
미 공개 글 (0)
WorldOfWarcraft (1)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
'알고리즘'에 해당되는 글 5건
2007. 10. 30. 11:26

지난번 문제에 연관된 문제입니다.

사실 지난번 문제는 이번 문제를 위한 전초전 정도 ㅎㅎ

지난번 문제를 푸시는 분들이 아무도 없는 것 같아서 더 이상은 안 올릴려고 했는데


그래도 마무리는 해야할 것 같아서 올립니다. ^^


최종 목적지는 그루엔버거의 알고리즘을 구현하는 것 입니다.


그루엔버의 알고리즘은 저희가 지난번에 구현했던 팰린드롬 알고리즘에 기초를 두고 있습니다.


틀린것은 문자가 아닌 숫자를 이용한다는 것과 거기에 수학적 관찰이 포함되어 있다는 것 입니다.


예를 들어 설명하면


13 => 팰린드롬이므로 X 13은 True

   13 + 31 = 44 => 팰린드롬이므로 O

14 => 팰린드롬이므로 X 14은 True

   14 + 41 = 55 => 팰린드롬이므로 O

......


87 + 78 = 165 => 팰린드롬이 아니므로 X 87은 True

   165 + 561 = 726 => 팰린드롬이 아니므로 X
726 + 627 = 1353    => 팰린드롬이 아니므로 X
   1353 + 3531 = 4884 => 팰린드롬이 아니므로 O

88 => 팰린드롬이므로 O 88은 True


이런 식으로 모든 수에서 구루엔버거의 알고리즘을 찾는 것 입니다.


물론 안되는 수가 있을지도 모릅니다. ^^ 이건 수학적 논리로 검증된 것이 아니거든요


그루엔버거란 학자가 한 잡지에 이러한 알고리즘을 투고하면서 많은 사람들이


어느 수가 그루엔버거의 알고리즘에 해당되는지 찾고 있습니다. 정확히 이야기하면


어느 수가 그루엔버거의 알고리즘에 해당되지 않는지 찾고 있다고 말해야겠네요.


어찌보면 아무런 의미 없는 알고리즘 일 수도 있지만 어떠한 사람에게는 흥미로운


문제꺼리가 될 수도 있겠죠 ^^


실제 사회에 나가서는 전혀 쓸모없는(제가 모르는 것 일수도 있지만) 알고리즘이니

너무 열을 올리지는 마세요


오늘도 열공열공 ~~ ^^


PS. 사실 이 문제를 올린 것은 성능문제 때문입니다.


어디선가 그런 말들을 하더군요. 자바 프로그래머들은 성능문제를 전혀 인식하지않고

프로그래밍을 한다구요
사실 인식할 필요가 없을지도 모릅니다. 그러나 제 생각엔 고급개발자로

갈려면 성능에 관련된 문제가 생길것 같더군요 ^^ 사회에 나가본적도 없는 놈이 이런 이야기를

하니 아이러니하군요;;; 그리고 이런 문제를 풀어가면서 문제를 푸는 능력을 키우는 것도 좋을것

같구요

그루엔버거의 알고리즘도 단순한 알고리즘에서 몇줄을 더 추가해 주는 것 만드로도 성능을 크게

개선시킬수가 있습니다.

그것을 생각할 수 있느냐와 없느냐가 자바의 고급과정에 들어가면 큰 영향을 미칠것 같아 함 생각해

보자구 올린것 이구요
(사실 이건 지극히 C에 관련된 생각입니다 ^^ 제가 자바보다 C에 익숙해서리;;)

그냥 생각없이 주저리 주저리 적어보았습니다. ^^;;;

2007. 10. 30. 11:21
정말 할일 없고 공부하기 싫고 심심하실때 함 코딩해 보세요..

간단하다면 간단하면서도 어렵다면 어려운 문제 입니다.

입력받은 문자가 "ABBA" 이면 true, "ABF"이면 false는 출력하는 함수를 만드는 것 입니다.

즉 입력받은 문자가 좌우 대칭이면 true이며 좌우 대칭이 아니면 false를 리턴하게 됩니다.

입력 받은 문자의 길이나 홀짝수에 관계 없이 작동되어야 합니다.

대뜸 왜 이런 문제를 카페에 올렸냐구요? 그냥 보던 책이 이러한 알고리즘 짜보는 내용이 있어서 올려봤습니다. ^^

처음에 이야기 했듯이 할일 없으신분들만 짜보시길 ^^... 괜히 이것때문에 시간 뺏겨도 전 책임지지 않습니다 ㅋ

오늘도 열공하세요~


ps. 학원 카페에 올렸들 글을 퍼왔습니다. ^^ 수정하기 귀찮아서 그냥 복사해서 올림
     뭐.. 내가 쓴 글이니 저작권 문제도 없음 ㅋ
2007. 4. 16. 23:53
이번에 올릴 알고리즘은 암스트롱넘버 입니다.

왜 암스트롱넘버라고 불리우는지는 모릅니다. ^__^

이 소스역시 후배의 부탁으로 짬내서(;;) 만든라서 멀라여~

간단한히 설명하자면 각 자리의 숫자를 세 제곱한뒤 전부 더해서 나온 값이 원래의 값과 같은 경우

암스트롱넘버라고 불리우는듯 합니다. (--; 글을 올려놓구 무책입해서 죄송 ㅎㅎ)

바로 소스 올라갑니다.~~

public class ArmstrongNumber {
    public static void main(String[] args) {
        int n, x, y, z;
        for(n=100; n<500; n++) {
            x = n/100; y = (n%100) / 10; z = (n%100) % 10;
            if (n == x*x*x + y*y*y + z*z*z) System.out.println(n + " = " + x + "^3 " + y + "^3 " + z + "^3");
        }
    }
}

** 개발환경 ver 0.001 **
O   S  : Ubuntu linux 6.10 (kernel version은 ;;; 터미널 열기 귀찮음)
TOOL : VIM + TagLIst
COMPILER : SUN JDK 1.5
DATE : 기억안남
깊은 생각 없이 생각난거 바로 만들었기 때문에 소스에 어떤 잠재 위험요소가 있을지 모릅니다. ^^

덧1. 개발환경을 추가해 볼려고 하는데 글을 몇번 더 올려야 어느정도 틀이 잡힐듯 싶네요
      우선 생각나는데로 몇개 적어보았습니다.
2007. 4. 11. 01:08
알고리즘 카테고리에 구구단을 제일 먼저 올리게 될 줄은 상상도 못했다.

좀더 근사한 알고리즘을 첫번째로 올리고 싶었는데 ^^

사실 구구단 소스는 2006년 초 C언어 특강을 받을때 만든 소스를

몇 일전 후배의 부탁으로 자바로 수정한 것 이다.

public class Gugudan {

    public static void main(String[] args) {
        int n, i;
        for(n=1; n<19; n++) {
            if (n<10) {
                for(i=2; i<6; i++) System.out.print(i + " * " + n + " = " + i*n + "\t");
            } else {
                for(i=6; i<10; i++) System.out.print(i + " * " + (n-9) + " = " + i*(n-9) + "\t");
            }

            if(n==9) System.out.println();
            System.out.println();
        }
    }
}



재미있는건 누군가가 지금 나에게 이런 알고리즘을 구현하라고 이야기하면...

구현하지 못 할 것 같다는 거다. 이 소스가 대단하는 것이 아니라 for문과 if문을 써서 이런

기교 아닌 기교를 부린다는 생각을 못 할 것 같다는 거다.

머리가 굳은건가 생각의 폭이 좁아진건가;

덧. 태터툴즈는 플러그인을 통해 소스를 깔끔히 볼수 있었는데 티스토에선 왜
     추가 안 하는 건지;;;
     결국 박스처리하고 테두리 넣었다 ㅋ
     그래도 코드 하일라이팅은 포기다 ㅠ.ㅠ

2007. 3. 16. 02:33
둠스데이 알고리즘

둠스데이의 자세한 이야기는 다음에 하기로 하고

우선 입력받은 해의 둠스데이가 무슨 요일인지 계산하는 소스이다


사실 이 소스를 언제 만들었는지는 기억도 안난다.

연휴때 만든 소스인데 미공개 이었던 글을 지금에서야 공개를 하는 것이다.

ps. 글 내용을 보면 둠스데이에 관한 이야기는 추후에 다시 한다고 하였는데 그 약속은 못 지키거나

     오랜 시간이 지난뒤에서야 지켜질 것 같다. 왜냐면 위 소스를 지금 분석도 못하는 바보가 되었기 때문이다.



prev"" #1 next