데이터 베이스 만드는 알고리즘에 관한 질문입니다.
글쓴이: kimyh / 작성시간: 토, 2007/12/15 - 3:12오전
php와 mysql을 공부하고 있는 초보 입니다.
공부도 할겸 해서 지금 사주 보는 프로그램을 만세력을 이용하여 코딩하고 있습니다.
입력된 값이 갑, 을, 병,정,무,기,경,신,임,계, 10개의 값중에 무작위로 $a, $b, $c, $d로 해서 4개의 값이 입력 되었을때 입력된 값중에 갑기, 을경, 병신, 정임, 무계 라는 두개의 짝으로 된 입력값이 있는지 없는지를 찾고자 합니다.
이때 입력값의 경우의 수에 따라 if문으로 만들어 구할수도 있겠지만 이렇게 되면 엄청나게 복잡하고 코딩이 지저분할것 같군요.
그래서 이를 간단하게 디비화 해서 쿼리문에 4개의 입력값만 넣고 쿼리를 날리면 갑기, 을경, 병신, 정임, 무계 라는 두개의 짝으로 된 값을 뽑아내고 싶을때 디비를 어떤 알고리즘으로 만들어야 할지 모르겠군요.
아시는 선배님 계시면 도움 좀 주시면 감사하겠습니다.
Forums:
원하시는 게 이게
원하시는 게 이게 맞는지 잘 모르겠습니다만,
갑=1, 을=2, 병=4, 정=8, ...이렇게 인코딩하신 다음에,
$x=$a+$b+$c+$d;
if ( ($x&33) == 33 ) echo "갑기";
if ( ($x&66) == 66 ) echo "을경";
...
이런식으로 하시면 어때요?
ps. ($x&1) && ($x&32) 이런 것도 가능하네요.
begin{signature}
THIS IS SPARTA!!!!!n.
end{signature}
답변 감사합니다. 그런데....
답변 감사합니다.
그런데 답변 주신 내용을 잘 이해하지 못해서요...
질문의 요지는 이를 경우의 수에 따라 if문으로 처리할수는 있지만 좀더 코딩을 간단히 하고 이와 유사한 복잡한 조건에서 필요한 조합을 찾아내야 하는 문제들이 많을때 이를 어떠한 방법으로 디비화 할수 있는가 하는점 입니다.
========================================================
살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.
살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.
관계형 DB 와는 별
관계형 DB 와는 별 관계 없는 문제인 것 같습니다. 시지프스님께서 답변해주신 방식이 가장 널리 쓰이는 방식인 것 같습니다. 잘 이해가 안된다고 하셔서 간단히 설명을 드리자면,
갑, 을, 병 ... 각각에 2진수의 특정한 '자리'를 대응시키는 겁니다. 즉, 갑=0000000001, 을=0000000010, 병=0000000100, ... 이런식으로 말이지요. 예를 들어서 4개의 입력된 값이 갑,을,병,무 이라면 이 값들을 모두 더하면 0000010111 이 되겠지요. 바로 눈에 보이다시피 이 더한 값의 어떤 자리가 1인지, 0인지를 판단하면 입력된 값을 알 수 있는 겁니다. 이를 위해 bitwise AND 연산을 사용합니다.
예를 들어 '갑+무'가 가능한지 알고 싶으면
가 성립하는지를 확인해보면 되는거지요. 입력값이 갑,을,병,무 라면, 갑+을+병+무 는 아까 말씀드린데로 0000010111 이고 '갑+무'는 0000010001 이므로
가 성립합니다. '갑+정'=0000001001 에 대해서는
이므로 입력값을 가지고 '갑정' 은 만들 수 없다는 것을 알 수 있습니다. 임의의 입력과 확인하고 싶은 임의의 조합에 대해 적용할 수 있도록 함수를 만드는 데에 몇 줄 필요하지 않을겁니다.
[완료]상세한 답변 감사합니다.
잠도 안 주무시고 상세한 답변 주신데 진심으로 감사드립니다.
처음 보는 내용이라 선뜻 이해 가는건 아니지만 자세한 설명을 잘 살펴보면 이해 할수 있을것 같습니다.
if문으로 처리 하다보니 여간 복잡한것이 아니고 내용도 상당이 길어 지더군요.
많은 도움 주신데 다시한번 감사드립니다.
======================================================
살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.
살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.
댓글 달기