본문 바로가기

코딩테스트/백준

[백준-자바/파이썬] 1152번 단어의 개수 / 2021.08.30

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

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한

www.acmicpc.net

 

 

1. Java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner
public class Main { 
    public static void main(String[] args) { 
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        String trimStr = str.trim();
        
        if(trimStr.isEmpty()) {
            System.out.println(0);
        }
        else {
            System.out.println(trimStr.split(" ").length);
        }
    }
}
cs

 

 

풀이 : 

먼저 스캐너로 문자열 입력을 받은 후 trim()을 사용하여 앞 뒤 공백 제거 (앞 뒤 공백 제거한 문자열이 trimStr)

그리고 trimStr을 split(" ")을 사용하여 공백으로 문자열을 자른후 길이를 출력

 

여기서 주의할 점이 trim으로 앞뒤 공백을 제거했으니 단어사이에 공백만 제거하면 된다고 생각하겠지만 

공백을 연속해서 두 번 치면 맨 앞에 공백은 사라지지만 두 번째 공백은 안 사라져서 길이가 1로 나오게 된다.

따라서 if문을 이용하여 조건을 걸어주어야하는데

앞뒤 공백 제거한 문자열 trimStr을 isEmpty를 이용하여 문자열이 공백이면 0이 출력되도록 해주어야 한다.

 

 

 

2. Python

 

1
2
3
4
5
6
str = input()
stripStr = str.strip()
if stripStr == "":
    print(0)
else:
    print(len(stripStr.split(" ")))
cs

 

 

풀이 : 자바와 똑같은 방식으로 풀었다.

다만 자바에서는 양쪽 공백을 trim()으로제거해주었지만 파이썬에서는 strip()을 사용하였다.