브론즈 2 등급의 문제지만 엄청 간단한 문제입니다.
첫 줄에 문자열을 입력받습니다. 이 문자열은 대소문자로 된 영단어가 입력되는데, 구분은 공백으로 구분됩니다.
주의해야 할 점은 공백은 연속으로 나오지는 않지만 공백이 문자의 앞뒤에 있을 수도 있다는 것 입니다.
공백을 기준으로 단어들을 잘라서 그 단어들의 개수를 출력하면 되는 알고리즘 입니다.
두 방식으로 풀어 보았습니다.
1. StringTokenizer를 사용
2. trim과 split 사용
두 방식 다 입력은 Scanner로 입력받았습니다.
---------------------------------------------첫 번째 방법 (StringTokenizer 사용)---------------------------------------------
import java.util.Scanner;
import java.util.StringTokenizer;
class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String S = sc.nextLine();
StringTokenizer st = new StringTokenizer(S," ");
int n = st.countTokens();
System.out.println(n);
// while(st.hasMoreTokens()){
// System.out.println(st.nextToken());
// }
}
}
--------------------------------------------첫 번째 방법 (trim(), split() 사용 사용)--------------------------------------------
import java.util.Scanner;
class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String S = sc.nextLine().trim();
System.out.println(S.split(" ").length);
}
}
먼저 첫 번째 방법부터 설명드리겠습니다.
먼저 사용을 위해 import를 받습니다.
스캐너는 사용하여 첫 째줄을 변수 S 에 입력받습니다.
문자열이 들어간 S를 공백(" ")을 기준으로하여 StringTokenizer을 사용하여 토큰을 생성합니다.
StringTokenizer는 세번 째 인자로 true 와 false를 받을 수 있는데 기본값은 false입니다.
true로 하였을 경우는 두번 째 인자에 사용된 값을 토큰으로 포함할지 안할지를 정하는 인자입니다.
false이므로 공백을 기준으로 토큰을 생성하지만 공백은 토큰으로 만들지 않습니다.
int countTokens() 메소드는 StringTokenizer에서 제공하는 메소드입니다.
토큰의 개수를 가져옵니다.
공백을 기준으로 만들어진 토큰의 개수를 가져옵니다.
그 개수를 출력해주면 됩니다.
토큰에 생성된 값들이 궁금하면 출력해보시면 됩니다.
hasMoreTokens()는 토큰이 남아있는지 안남아있는지 검사하는 메소드이고
nextToken()는 다음 토큰을 가져오는 것입니다.
두 번째 방법을 설명드리겠습니다.
기본 자바 String에서 제공하는 라이브러리여서 import 할 필요가없습니다.
입력을 위해 스캐너만 import 해줍니다.
스캐너를 생성합니다.
라인을 읽어 변수 S에 넣는데, 여기서 trim()을 사용합니다.
trim()은 공백을 제거해줍니다.
하지만, 문자사이에 있는 공백은 제거해주지 않습니다.
앞 뒤에 공백만 제거해주는 것 입니다.
앞 뒤 공백이 제거된 문자열에 split으로 " " 기준으로 자릅니다.
이때 length를 사용하여 개수를 가져올 수 있습니다.
그 개수를 바로 출력해주면 됩니다.
1152번 단어의 개수 문제는 자바의 라이브러리를 사용하면 간단하게 풀 수 있는 문제였습니다.
알고리즘에는 정답이 없습니다.
이런 풀이도 있구나하고 생각해주시면 감사하겠습니다.
'알고리즘 with JAVA' 카테고리의 다른 글
백준 5622번 다이얼 - 자바 (0) | 2021.04.12 |
---|---|
백준 2908번 상수 - 자바 (0) | 2021.04.12 |
백준 1157번 단어 공부 - 자바 (0) | 2021.04.09 |
백준 2675번 문자열 반복 - 자바 (0) | 2021.04.08 |
백준 10809번 알파벳 찾기 - 자바 (0) | 2021.04.07 |