일단 이 프로그램이 학습용으로 교수가 과제로 냈다면
아마도 일반적인 방법으로 하는것이 아닐꺼에요.
보통 데이타구조론 교수가 이 문제를 많이 냅니다.
또한, 마찬가지로 상용프로그램에서도 일반적인 방법을 사용하면
안되는것은 당연하죠
일단 소문자와 숫자를 합하여 출력하는것은 다 알고 있다는
가정하에 출발합시다.
그리고,
랜덤으로 발생한 데이타와 기존의 데이타와 비교하여
있을경우 다시 랜덤을 발생한다.
이 명제는 같습니다.
그러나 기존의 데이타와 비교하는 방법에는 차이가 있죠
일반적으로 무작위로 저장된 데이타와 비교할 경우
순차적 검색을 하는데 이럴경우
최대 N! 검색 Load가 걸립니다.
그렇다고 입력시 계속적인 Sort를 하는것도 더 많은 문제가 발생하죠
이 문제의 정답은 양방향 링크 구조 입니다.
다른말로 Tree구조라고도 하죠
입력할때부터 양방향링크구조에 집어넣고 검색하는 방식으로
방법은 데이타구조론 책에 서술되어 있습니다.
아마도 여기 팁란에도 양방향링크는 여기저기 있을거에요.
이궁 정말 답변을 할까 말까 고민많이 했음.
질문의 요지 자체가 위의 답변을 요구하는 것인지
아니면 정말 Random발생도 못하는 수준인지 알 수 없어서...
그럼 이만.
아마도 일반적인 방법으로 하는것이 아닐꺼에요.
보통 데이타구조론 교수가 이 문제를 많이 냅니다.
또한, 마찬가지로 상용프로그램에서도 일반적인 방법을 사용하면
안되는것은 당연하죠
일단 소문자와 숫자를 합하여 출력하는것은 다 알고 있다는
가정하에 출발합시다.
그리고,
랜덤으로 발생한 데이타와 기존의 데이타와 비교하여
있을경우 다시 랜덤을 발생한다.
이 명제는 같습니다.
그러나 기존의 데이타와 비교하는 방법에는 차이가 있죠
일반적으로 무작위로 저장된 데이타와 비교할 경우
순차적 검색을 하는데 이럴경우
최대 N! 검색 Load가 걸립니다.
그렇다고 입력시 계속적인 Sort를 하는것도 더 많은 문제가 발생하죠
이 문제의 정답은 양방향 링크 구조 입니다.
다른말로 Tree구조라고도 하죠
입력할때부터 양방향링크구조에 집어넣고 검색하는 방식으로
방법은 데이타구조론 책에 서술되어 있습니다.
아마도 여기 팁란에도 양방향링크는 여기저기 있을거에요.
이궁 정말 답변을 할까 말까 고민많이 했음.
질문의 요지 자체가 위의 답변을 요구하는 것인지
아니면 정말 Random발생도 못하는 수준인지 알 수 없어서...
그럼 이만.
PS : 랜덤 발생 루틴
s := chr($61 + random(26)) +
chr($61 + random(26)) +
chr($61 + random(26)) +
inttostr(random(10)) +
inttostr(random(10) +
inttostr(random(10));