문제 : 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);
	}
}

 

+ Recent posts