[伯俊]1811号:単語の並べ替え
質問する
に感銘を与える
知らないときは、すぐに答えを探さなくても、問題解決に必要な概念を探さなければなりません.逆に、今は必要な概念を熟知し理解するのに時間を費やしたほうがいい.一人で問題を考えるのは、希望の方向とは違って、いい方法ではないようだ.(特に概念に乏しい現在はより多くの材料を蓄積する時)
このように解いたのではないでしょうか.
必要なコンセプトはかなり難しいので、以下のブログで彼らの整理内容を理解して、もう一度説明したいと思います.
基本概念
今回の質問は基本的にArrayこれはsort()メソッドとcompareメソッドを正しく理解してこそ解決できる問題である.私はよく理解できなかったので、解くのに苦労して、解けなかった.
ひび割れ
package december_first;
import java.util.List;
import java.util.HashMap; // 꼭 넣어주기
import java.util.LinkedList;
import java.util.Map; // 꼭 넣어주기
import java.util.Scanner;
public class baek_1181 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
//sc.next(); ?
// 인덱스, 단어 해쉬맵 생성
Map<Integer, String> map = new HashMap<>();
// 인덱스, 단어 해쉬맵 입력
for (int i = 0; i < num; i++) {
map.put(i, sc.next()); // 왜 sc.nextLine()로 하면 안 됐지?
}
sc.close();
// 인덱스, 단어길이 해쉬맵 생성 (인티저, 인티저 주의)
Map<Integer, Integer> lengthMap = new HashMap<>();
System.out.println(map.get(0));
// 인덱스, 단어길이 해쉬맵 입력
for (int i = 0; i < num; i++) {
lengthMap.put(i, map.get(i).length());
System.out.println(lengthMap.get(i));
}
// 단어길이 해쉬맵 value순으로 오름차순 정렬
List<Map.Entry<Integer, Integer>> entryList = new LinkedList<>(lengthMap.entrySet());
entryList.sort(((o1, o2) -> lengthMap.get(o1.getKey()) - lengthMap.get(o2.getKey())));
for(Map.Entry<Integer, Integer> entry : entryList){
System.out.println("key : " + entry.getKey() + ", value : " + entry.getValue());
}
// 사진 1
// 인덱스, 단어 해쉬맵 생성
Map<Integer, String> result = new HashMap<>();
// 반복문 돌려서 단어길이 같은 게 있으면 map에서 단어 가져와서 비교해주기
for(int i = 0; i < num; i++) {
int num1 = 5;
if (entryList.get(i) == entryList.get(i+1)) {
num1 = map.get(i).compareTo(map.get(i+1));
}
if (num1 == 5) {
result.put(i, map.get(entryList.get(i)));
}
if (num1 == 1) {
}
}
}
}
実際,単語数の順に答えをリストすることに成功した.しかし、問題は、単語の数が同じである場合、辞書の順序で並べ替えることです.
単語の数が同じであれば、低い辞書の順序で並べ替えても、単語の数が同じであれば、
たとえば、4つの単語があります
love
hope
you
make
これにより、love、hope、makeは辞書順に並び続けます.だから容易ではない...
基本コンセプトが明確なブログ
ComparableとComparatorについて
https://st-lab.tistory.com/243
単語の並べ替えを解く
https://st-lab.tistory.com/112
類似問題座標位置合わせの問題
https://st-lab.tistory.com/110#%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
こちらのブログに入るとこの問題を解決するアリーユーザがsort()を実装する方法を以下に示す.
時間がかかる部分です.理解してから答えましょう.
HashMapをValueでソートする方法
https://velog.io/@cgw0519/Java-HashMap-Value-%EA%B8%B0%EC%A4%80%EC%9C%BC%EB%A1%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0
このブログで参考にして、問題を解決しました.
Array.sort()の基本定理
https://coding-factory.tistory.com/549
このブログでsort()を参考にして知りました.しかしhashmapは使わず、方向を変える.
Reference
この問題について([伯俊]1811号:単語の並べ替え), 我々は、より多くの情報をここで見つけました https://velog.io/@letsbebrave/백준-1811번-단어-정렬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol