[Java] UVa 848번 문제 - fmt
onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=10&page=show_problem&problem=789
Online Judge
848 - Fmt Time limit: 3.000 seconds
onlinejudge.org
문제 설명
내 코드
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
int max = 72;
String paragraph ="";
while(scanner.hasNextLine()){
String input= scanner.nextLine();
if(!input.equals(""))
paragraph+=input+" ";
if(input.equals("") || !scanner.hasNextLine()){
//System.out.println("->"+paragraph);
String first="";
int j=0;
while(paragraph.charAt(j)==' '){
first+=paragraph.charAt(j);
j++;
}
String output="";
output+=first;
//System.out.println("->"+first);
paragraph=paragraph.trim();
String[] dic = paragraph.split(" ");
//System.out.println("->"+Arrays.toString(dic));
if(dic.length==1){
System.out.println(paragraph);
}
else{
for(int i=0; i<dic.length;i++){
if((output.length() + (dic[i].length()+1)) >72 && i==dic.length-1){
System.out.println(output);
System.out.println(dic[i]);
}
else if((output.length() + (dic[i].length()+1)) >72 && i==0){
output=dic[i];
}
else if(i==dic.length-1){
output+=" "+dic[i];
System.out.println(output);
}
else if((output.length() + (dic[i].length()+1)) <=72 && i==0){
output+=dic[i];
}
else if((output.length() + (dic[i].length()+1)) <=72){
output+=" "+dic[i];
}
else{
System.out.println(output);
output=dic[i];
}
}
}
paragraph="";
System.out.println("");
}
}
}
}
🎨 Key Point
전체 줄을 합친 다음에 단어 하나하나를 Split하여 72개가 넘는지 안넘는지에 초점을 맞췄다.
거의 때려 맞추기 식으로 맞춘 풀이라 더 좋은 풀이가 있을거라 생각 된다.
'Algorithms > string' 카테고리의 다른 글
[Java] 월도르프를 찾아라 Where's waldorf? - UVa 10010번 문제 (0) | 2020.10.07 |
---|---|
[Java] WERTYU 문제 - UVa 10082번 Programming Challenges 문제 17번 (0) | 2020.10.07 |
[Java] 10진수 대 16진수 (0) | 2020.10.07 |
[Java] 글자 단어 개수 세기 (0) | 2020.10.07 |
[Java] 공통된 변경 문자열(Common Permutation) (0) | 2020.10.06 |