지난번 문제에 연관된 문제입니다.
사실 지난번 문제는 이번 문제를 위한 전초전 정도 ㅎㅎ
지난번 문제를 푸시는 분들이 아무도 없는 것 같아서 더 이상은 안 올릴려고 했는데
그래도 마무리는 해야할 것 같아서 올립니다. ^^
최종 목적지는 그루엔버거의 알고리즘을 구현하는 것 입니다.
그루엔버의 알고리즘은 저희가 지난번에 구현했던 팰린드롬 알고리즘에 기초를 두고 있습니다.
틀린것은 문자가 아닌 숫자를 이용한다는 것과 거기에 수학적 관찰이 포함되어 있다는 것 입니다.
예를 들어 설명하면
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에 익숙해서리;;)
그냥 생각없이 주저리 주저리 적어보았습니다. ^^;;;
간단하다면 간단하면서도 어렵다면 어려운 문제 입니다.
입력받은 문자가 "ABBA" 이면 true, "ABF"이면 false는 출력하는 함수를 만드는 것 입니다.
즉 입력받은 문자가 좌우 대칭이면 true이며 좌우 대칭이 아니면 false를 리턴하게 됩니다.
입력 받은 문자의 길이나 홀짝수에 관계 없이 작동되어야 합니다.
대뜸 왜 이런 문제를 카페에 올렸냐구요? 그냥 보던 책이 이러한 알고리즘 짜보는 내용이 있어서 올려봤습니다. ^^
처음에 이야기 했듯이 할일 없으신분들만 짜보시길 ^^... 괜히 이것때문에 시간 뺏겨도 전 책임지지 않습니다 ㅋ
오늘도 열공하세요~
ps. 학원 카페에 올렸들 글을 퍼왔습니다. ^^ 수정하기 귀찮아서 그냥 복사해서 올림
뭐.. 내가 쓴 글이니 저작권 문제도 없음 ㅋ