컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Monday, January 09, 2006

[펄/Perl] 해쉬: 최대값 최소값 가진 키 구하기


GetHashMax: 주어진 해쉬(Hash)에서, 가장 큰 숫자의 값(value)를 가진 키(key) 반환. 만약 동일값이 있으면 토정비결에 따라서 아무것이나 하나만 선택하여 반환.

GetHashMin: 위와는 반대로 최소값(Min).

해쉬 값 자체의 최대값 최소값이 아닌, 그러한 값을 가진 키를 구하는 것은 쉽지가 않았다. 펄이란 언어 자체가 워낙 복잡해서인지 잘 되지 않았다. 인터넷을 찾아보고 겨우 완성은 했는데 최적화가 되지 않아 엉성했다. 하루 이틀 정도 고민하다가 O'Reilly 출판사의 "Learning Perl"을 보고 해쉬에 대한 공부를 처음부터 다시 하고는 GetHashMax 와 GetHashMin 함수를 만들었다. 펄에서는 함수가 아닌 서브루틴으로 불리지만 값을 반환하니 함수로 지칭하는 것이 더 정확하다.

다음의 예제는 학생들의 점수가 들어 있는 간단한 데이터베이스에서 가장 높은/가장 낮은 점수를 가진 학생의 이름을 구하는 것이다. 만약 이것을 펄이 아닌 다른 언어로 만들었다면 몇 페이지 분량은 족히 되었을 것이다.

#!/usr/bin/perl
use strict; use warnings;

   my %score = (
      "밤톨이" => 30,
      "맹구"   => 0,
      "땡칠이" => 65,
      "똘똘이" => 98,
      "영구"   => 50,
    );

print "Max: ", &GetHashMax(%score), "\n";
print "Min: ", &GetHashMin(%score), "\n";


sub GetHashMax {
   %_ = @_;
   @_ = sort { $_{$b} <=> $_{$a} } keys %_;
   shift @_;
}

sub GetHashMin {
   %_ = @_;
   @_ = sort { $_{$a} <=> $_{$b} } keys %_;
   shift @_;
}





▶▶ [펄 기초] Perl 의, Hash (해쉬/해시) 정의, 사용법

▶▶ [Perl/펄] 배열(Array)에서, 최소값(Min) 최대값(Max) 구하기

☞ Perl

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top