일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- append
- ac 5430번
- StringTokenizer
- 프로그래머스
- 백준 1541
- 프로그래머스 자바
- 백준 1647번 도시 분할 계획 - java
- toUpperCase
- 18111번 마인크래프트 - java 구현
- 최소 힙 1927
- 백준 1806번 부분합 java
- hash
- HashMap
- 백준 2473번 세 용액 - java
- StringBuilder
- 프로그래머스 java
- dp
- kotlin
- 코틀린기초
- mysql hy000 에러
- replace()
- 백준 3190번
- 백준 14938번 서강그라운드
- 백준 1043번 거짓말 - java 분리 집합
- Java
- 백준 1197번 최소 스패닝 트리 - java
- HashSet
- 백준 2467번 용액 자바 - 이분탐색
- map
- Stack
Archives
- Today
- Total
말하는 컴공감자의 텃밭
백준 1152 단어의 개수 <브론즈 2> - 자바 StringTokenizer 본문
728x90
보자마자 Split 쓰거나 CharAt으로 공백 구분하면 되겠는데 했다.
양쪽 공백은 trim으로 없앤 후 배열에 넣어서 크기를 내면 답이겠네~ 했다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import java.util.Scanner; public class Main{ public static void main(String[] args){ //input Scanner sc = new Scanner(System.in); String S; int cnt = 0; // count S = sc.nextLine(); //logic for(int i = 0; i < S.length(); i ++){ // 모든 공백 확인 if(S.charAt(i) == ' '){ cnt++; } } if(S.charAt(0) != ' ' && S.charAt(S.length()-1) != ' '){ cnt = cnt + 1; // 앞 뒤에 공백이 없다면 " " + 1해야 단어의 수 } if(S.charAt(0) == ' ' && S.charAt(S.length()-1) == ' '){ cnt = cnt - 1; // 앞 뒤가 공백이라면, -1 해야 단어의 수 } // 앞 또는 뒤에 하나씩 공백이 있다면 cnt 그대로 //output System.out.println(cnt); } } | cs |
charAt으로도 간단했는데 다른사람은 뭐로 풀었다 검색해보다가 StringTokenizer이라는 메소드를 찾았다.
문자열을 구분자로 쪼개주는 클래스인데 token으로 구분짓는다고 한다.
>> StringTokenizer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import java.util.StringTokenizer; public class TokenizerExample { public static void main(String[] args) { String sentence = "Hello, how are you today?"; StringTokenizer tokenizer = new StringTokenizer(sentence, ", "); while (tokenizer.hasMoreTokens()) { String token = tokenizer.nextToken(); System.out.println(token); } } } | cs |
이런식으로 작성하면
Hello
how
are
you
today?
이렇게 쪼개준다.
물론 복잡한걸 사용하려면 split()를 사용하는게 좋다고 한다.
GPT한테 슥 물어보니
- StringTokenizer(String str, String delim)
- 토큰화할 지정된 문자열 str과 토큰을 구분하는 데 사용되는 구분 기호(들) delim을 사용하여 StringTokenizer 객체를 생성하는 생성자.
- 부울 hasMoreTokens()
- 문자열에 사용 가능한 토큰이 더 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
- 문자열 nextToken()
- 문자열에서 다음 토큰을 반환합니다.
- int countTokens()
- 문자열에 남아 있는 토큰의 수를 반환합니다.
- 부울 hasMoreElements()
- 이 메소드는 hasMoreTokens()와 동일하며 StringTokenizer가 구현하는 Enumeration 인터페이스를 이행하기 위해 제공됩니다.
- 객체 nextElement()
- 이 메서드는 nextToken()과 동일하며 Enumeration 인터페이스를 이행하기 위해 제공됩니다.
해당 클래스로 작성하면
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import java.util.*; public class Main { public static void main(String[] args){ //input Scanner sc = new Scanner(System.in); String S = sc.nextLine(); sc.close(); //logic StringTokenizer st = new StringTokenizer(S, " "); //output System.out.print(st.countTokens()); } } | cs |
간결.. 해.
간단한 문제면 활용할 수 있을 듯 싶다.
728x90
'알고리즘 > Backjoon - Java' 카테고리의 다른 글
백준 29774 케이크 자르기 게임 (small) - java 에드훅 (0) | 2023.09.15 |
---|---|
백준 10815번 숫자카드 <실버5> - 자바 java 이분탐색, HashSet (0) | 2023.08.03 |
백준 13335 트럭 <실버 1> - 자바 Queue (0) | 2023.07.20 |
백준 28278 스택2 <실버4> - 자바 Stack (0) | 2023.07.13 |
백준 - 1463번 1로 만들기 <실버 3> - 자바 DP (0) | 2023.07.13 |
Comments