250x250
반응형
Notice
Recent Posts
Recent Comments
Link
개발세발
[Java/자바][백준] 2902번: KMP는 왜 KMP일까? (split 또는 isUpperCase 사용) 본문
문제풀기/백준 boj.kr
[Java/자바][백준] 2902번: KMP는 왜 KMP일까? (split 또는 isUpperCase 사용)
뉼👩🏻💻 2022. 2. 13. 21:43728x90
반응형
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
반응형
'문제풀기 > 백준 boj.kr' 카테고리의 다른 글
[Java/자바][백준] 1094번: 막대기 (0) | 2022.03.07 |
---|---|
[Java/자바][백준] 1333번: 부재중 전화 (2) | 2022.02.07 |