--<백준 1152번 :: 단어의 개수 - JAVA>--
총 두 가지 방법으로 풀었습니다.
1. StringTokenizer를 사용하는 방법
2. charAt을 사용하는 방법
다른 블로그를 보니까 대부분 StringTokenizer를 사용하셨더라고요! 당연히 StringTokenizer 클래스가 간단하죠. 그러나 알고리즘에 대해 아직까지는 노가다가 더 편한 저는... charAt으로도 해봤습니다. 막상 풀어보니 메모리와 시간은 비슷하더라고요! 위에가 charAt, 아래가 StringToknizer 입니다!
천천히 파헤쳐보겠습니다~
1. StringTokenizer를 활용한 자바 코드
import java.util.StringTokenizer;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner str = new Scanner(System.in);
String s = str.nextLine();
str.close();
StringTokenizer st = new StringTokenizer(s, " ");
System.out.println(st.countTokens());
}
}
완전 간단하죠~? StringTokenizer가 띄어쓰기를 기준으로 단어를 분류하고, 그 분류된 단어들을 토큰이라고 합니다.
그 토큰의 개수만 출력해주면 바로 해결!
이번엔 charAt을 사용한 방법을 보여드리겠습니다.
2. charAt을 사용한 방법
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String str;
int cnt = 0;
str = input.nextLine();
for(int j = 0; j < str.length(); j ++){ //우선 공백의 개수를 먼저 세아린다
if(str.charAt(j) == ' '){
cnt++;
}
}
if(str.charAt(0) != ' ' && str.charAt(str.length()-1) != ' '){ //첫 번째와 마지막이 공백이 아닌 경우
cnt = cnt + 1;
}
if(str.charAt(0) == ' ' && str.charAt(str.length()-1) == ' '){ //첫 번째와 마지막이 공백인 경우
cnt = cnt - 1;
}
System.out.println(cnt);
}
}
어떤 알고리즘인지 감이 오시나요??
아래 그림처럼 이해하면 쉽습니다!
우선 for문을 사용하여 공백의 개수를 cnt에 입력합니다.
그리고
case1. 가장 첫 번째와 마지막이 공백이 아닌 경우 -> cnt = cnt + 1
case2. 가장 첫 번째와 마지막 중에서 하나만 공백인 경우 -> cnt 변화 없음
case3. 가장 첫 번째와 마지막이 모두 공백인 경우 -> cnt = cnt - 1
이렇게 예를 들어서 하면 쉽게 이해가 됩니다!
아직은 어려운 알고리즘은 아니어서 이렇게 노가다로 풀지만.... 코딩테스트나 프로그래머스에 나오는 문제들은 노가다로는 절대 안 풀리더라고요.. 하하
코딩러들 다들 화이팅~!
'프로그래밍 > 알고리즘' 카테고리의 다른 글
백준(2720) - 세탁소 사장 동혁 Java (0) | 2023.09.05 |
---|---|
[Java] Arrays.sort 사용하여 오름차순 정리 및 int 출력 (0) | 2023.06.27 |
[Java] 랜덤한 주사위 수 예측하기 (0) | 2023.06.20 |
백준 2562번 :: 최댓값 - JAVA (0) | 2021.10.01 |
백준 1157번 :: 단어 공부 - JAVA (0) | 2021.10.01 |