-
반응형
https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
풀이
현재까지 나온 문자열인지 확인을하는 Map을 이용해서 나온적이 없는 문자열이면 벡터에 add한 뒤, 정렬기준을 문자열의 길이가 작은순, 같다면 사전적으로 먼저오는순으로 정렬을 한다.
코드
import java.util.*; public class Main { static Vector<String> v=new Vector<>(); static Map<String,Boolean> check=new HashMap<>(); static int n; public static void main(String[] args){ Scanner scanner=new Scanner(System.in); n=scanner.nextInt(); for(int i=0;i<n;i++){ String temp=scanner.next(); if(check.get(temp)==null){ check.put(temp,true); v.add(temp); } } Collections.sort(v, new Comparator<String>() { @Override public int compare(String o1, String o2) { if(o1.length()==o2.length()){ return o1.compareTo(o2); } else{ return o1.length()-o2.length(); } } }); for(int i=0;i<v.size();i++){ String str=v.get(i); System.out.println(str); } } }
반응형'문제풀이 > 백준oj' 카테고리의 다른 글
[백준OJ] 1309번 동물원 (0) 2021.11.07 [백준OJ] 7568번 덩치 (0) 2021.11.05 [백준OJ] 1120번 문자열 (0) 2021.11.02 [백준OJ] 2920번 음계 (0) 2021.11.01 [백준OJ] 16943번 숫자 재배치 (0) 2021.10.28 댓글