문제 : https://www.acmicpc.net/problem/3181
3181번: 줄임말 만들기
꿍은 만사가 귀찮아서 말을 하기도 귀찮아 한다. 그래서 하려는 말을 대신해줄 줄임말을 만들려고 하는데 나름 규칙을 만들었다. 하려는 말은 최소 하나 이상의 단어를 포함하는데 각 단어들은
www.acmicpc.net
문제 요약 : 만들어진 줄임말 출력
| 입력 | 출력 |
| 1 ≤ 문장 길이 ≤ 100 |
맨 앞 단어를 제외하고 'i', 'pa', 'te', 'ni', 'niti', 'a', 'ali', 'nego', 'no', 'ili'에 해당하는 문자 제외 후 각 단어의 맨 앞문자의 대문자 출력 |
JAVA
소스코드 : https://github.com/cbkpar/BOJ/blob/main/boj_3181.java
| 채점 번호 | 아이디 | 문제 번호 | 결과 | 메모리 | 시간 | 언어 | 코드 길이 |
| 30902978 | cbkpar | 3181 | 맞았습니다!! | 14228KB | 124ms | Java 11 | 924B |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
sb.append(st.nextToken().toUpperCase().charAt(0));
while(st.hasMoreTokens()) {
String str = st.nextToken();
if(str.equals("i")) continue;
if(str.equals("pa")) continue;
if(str.equals("te")) continue;
if(str.equals("ni")) continue;
if(str.equals("niti")) continue;
if(str.equals("a")) continue;
if(str.equals("ali")) continue;
if(str.equals("nego")) continue;
if(str.equals("no")) continue;
if(str.equals("ili")) continue;
sb.append(str.toUpperCase().charAt(0));
}
System.out.println(sb);
}
}
단순하게 단어 하나하나 확인하며 위에 해당하는 단어가 있을 경우 건너뛰며 탐색한다.
HashMap 사용 )
메모리는 줄어들었지만 처리 시간이 늘어났다.
| 채점 번호 | 아이디 | 문제 번호 | 결과 | 메모리 | 시간 | 언어 | 코드 길이 |
| 31095515 | cbkpar | 3181 | 맞았습니다!! | 14120KB | 132ms | Java 11 | 941B |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
sb.append(st.nextToken().toUpperCase().charAt(0));
HashMap<String,Boolean> chk = new HashMap<String,Boolean>();
chk.put("i", true);
chk.put("pa", true);
chk.put("te", true);
chk.put("ni", true);
chk.put("niti", true);
chk.put("a", true);
chk.put("ali", true);
chk.put("nego", true);
chk.put("no", true);
chk.put("ili", true);
while(st.hasMoreTokens()) {
String str = st.nextToken();
if(chk.containsKey(str)) continue;
sb.append(str.toUpperCase().charAt(0));
}
System.out.println(sb);
}
}
'백준온라인' 카테고리의 다른 글
| [백준온라인] 1431번 시리얼 번호 (0) | 2021.07.21 |
|---|---|
| [백준온라인] 10205번 헤라클레스와 히드라 (0) | 2021.07.20 |
| [백준온라인] 11383번 뚊 (0) | 2021.07.18 |
| [백준온라인] 10570번 Favorite Number (0) | 2021.07.17 |
| [백준온라인] 5671번 호텔 방 번호 (0) | 2021.07.16 |