Baekjoon 1152. 단어의 개수

nang_nang·2022년 12월 26일
0

PS

목록 보기
12/18

📝 Baekjoon 1152 문제풀이


💡문제 정의

baekjoon 1152

문제는 위와 같다. C와 파이썬으로 둘 다 풀어 보았는데,,,
역시 이 문제처럼 비교적 간단한 문제에서조차도 파이썬이 문자열 다루기에 훨씬 간편하다고 느꼈다.

아래는 C언어 소스코드.

1) C

# include <stdio.h>
# include <string.h>

char str[1000000];

int main() {
  gets(str);
  int res = 0;
  int len = strlen(str);
  
  if (len == 1 && str[0] == ' ') res--;
  else {
    for (int i = 1;i < len - 1;i++) {
      if (str[i] == ' ' && str[i - 1] != ' ') res++;
    }
  }
  printf("%d\n", res + 1);
  
  return 0;
}

처음에 gets가 아니라 fgets 함수를 사용했었는데, fgets는 마지막 개행문자까지 저장하기 때문에 문자열 길이를 생각할 때 조금 헷갈리는 느낌이었다. 그래서 그냥 개행문자를 저장하지 않는 gets 함수를 사용했다.

2-1) Python

str1 = input()
arr = str1.split()
print(len(arr))

파이썬으로 작성한 코드는 위와 같다. 공백으로 구분해서 배열을 만들고, 배열 요소의 개수를 출력하면 끝!

다른 사람들의 풀이를 봤는데 strip 함수로 문자열 맨 앞과 맨 끝의 공백을 제거 -> count 함수로 공백의 개수(cnt) 세기 -> cnt + 1 출력! 이런 방식의 풀이도 있었다. 하지만 이 경우에는 공백 하나만 입력되는 케이스를 따로 처리해줘야 한다. 그렇지 않을 경우 공백 하나만 입력했을 때 결과가 0이 아닌 1이 된다. 코드는 아래와 같다.

2-2) Python

str1 = input().strip()
if len(str1) == 0:
  print(0)
else:
  cnt = str1.count(' ')
  print(cnt + 1)
profile
조금씩 앞으로

0개의 댓글