BOJ 1181 단어 정렬

1 개요[ | ]

BOJ 1181 단어 정렬
  • 단어들을 정렬하는 문제
  • 알고리즘 분류: 정렬

2 C++[ | ]

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

bool comp(string x, string y) {
    return x.length() == y.length() ? x.compare(y)<0: x.length() < y.length();
}

int main() {
    int N;
    cin >> N;
    string a[20000];
    for(int i=0; i<N; i++) {
        cin >> a[i];
    }
    sort(a, a+N, &comp);
    string temp = "";
    for(int i=0; i<N; i++) {
        if(a[i] == temp) continue;
        cout << a[i] << '\n';
        temp = a[i];
    }
}

3 Java[ | ]

import java.util.Scanner;
import java.util.HashSet;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		HashSet<String> set = new HashSet<String>();
		for(int i=0; i<n; i++) set.add( sc.next() );
		String[] words = new String[set.size()];
		set.toArray(words);
		Arrays.sort(words, new Comparator<String>() {
			public int compare(String a, String b) {
				int lenA = a.length();
				int lenB = b.length();
				if( lenA != lenB ) return lenA-lenB;
				return a.compareTo(b);
			}   
		});
		int len = words.length;
		for(int i=0; i<len; i++) System.out.println(words[i]);
	}
}

4 Perl[ | ]

@elements;
sub uniq { %seen; grep !$seen{$_}++, @_; }
push @elements, $i=<> for (1..<>);
print $_ for (sort { length $a <=> length $b || $a cmp $b } uniq(@elements));

5 PHP[ | ]

<?php
$n = intval(fgets(STDIN));
$arr = [];
while($n--) $arr[] = rtrim(fgets(STDIN));
$arr = array_unique($arr);
usort($arr, function($a, $b) {
    $c = strlen($a) - strlen($b);
    if( $c != 0 ) return $c;
    return ($a > $b);
});
foreach($arr as $ele) echo $ele."\n";

6 Python[ | ]

n = int(input())
words = set()
for _ in range(n):
    words.add(input())
for word in sorted(words, key=lambda e: (len(e), e)):
    print( word )
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}