개발세발

[Java/자바][백준] 2902번: KMP는 왜 KMP일까? (split 또는 isUpperCase 사용) 본문

문제풀기/백준 boj.kr

[Java/자바][백준] 2902번: KMP는 왜 KMP일까? (split 또는 isUpperCase 사용)

뉼👩🏻‍💻 2022. 2. 13. 21:43
728x90
반응형
SMALL

https://www.acmicpc.net/problem/2902

 

2902번: KMP는 왜 KMP일까?

입력은 한 줄로 이루어져 있고, 최대 100글자의 영어 알파벳 대문자, 소문자, 그리고 하이픈 ('-', 아스키코드 45)로만 이루어져 있다. 첫 번째 글자는 항상 대문자이다. 그리고, 하이픈 뒤에는 반드

www.acmicpc.net

 


 

☑️ [풀이]

🔹 split으로 2번에 걸쳐 나뉘어 대문자만 추출 

   Knuth-Morris-Pratt // "-"를 기준으로 나눔

 → {knuth, Morris, Pratt} // i번 index의 값을 하나하나씩 나눔

 → {K, n, u, t, h} // i번 index의 0번째 index값만 리턴

 

import java.util.Scanner;

//kmp 이름 축약하기 
public class Q2902_split {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		String full = sc.nextLine();         
		String[] name = full.split("-"); //{knuth, morris, pratt}
		
		for(int i =0 ; i <name.length; i++) {
			String namecut = name[i];
			String[] upper = namecut.split("");
			
			System.out.print(upper[0]);	
		}
	}
}

 

 

🔹 Character.isUpperCase를 사용해 문자가 대문자일 경우 true로 받아 true값만 리턴

import java.util.Scanner;

//kmp 이름 축약하기 - isUpperCase 사용
public class Q2902_isUpperCase {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		String full = sc.nextLine();         
		
		for(int i =0; i<full.length();i++) {
			char ch=full.charAt(i);
	
			if(Character.isUpperCase(ch)==true) {
				System.out.print(full.charAt(i));}
		}
	}
}

 

 

✔️ 리뷰

 쉬운 문제였지만 하나의 문제에 풀이방법을 2개 이상 내보는 경험을 한걸 소소하게 남겨보고 싶어서 기록한다. ㅎㅎ. 전에도 문제를 풀 때 이것저것 여러 풀이방법을 시도해봤었다. 하지만 그 시도들은 번번히 다 실패했었고 정답 코드는 마지막에 딱 하나만 건질 수 있었다. 그런데 드디어 둘 다 맞게 되어 별거아니지만 작은 즐거움을 남겨보고자 남기는 글.  

728x90
반응형