-
백준 1152번 : 단어의 개수Language/C 2021. 6. 1. 21:51
띄어쓰기(공백)를 기준으로 나누어 단어의 갯수를 세어주는 코드를 짜보라는 문제이다.
주의해야할 점은 문자열을 입력받을때 문자열의 맨 앞, 맨 뒤에 공백이 있을 수 있다는 것이다.
맨 앞, 맨 뒤의 공백을 없애거나 무시해주면서 띄어쓰기(공백)의 개수를 세어주는 코드를 짜보자.
필자가 짠 코드이다. 일단 맨 앞, 맨 뒤가 공백일 경우를 생각해봤다.
문제에서 보면 공백이 연속해서 나오는 경우는 없다고 했다. 그러므로 앞이 공백이라면(arr[0]) 공백을 무시하고 2번째(arr[1])부터 읽으면 된다. 그리고 맨 뒤가 공백일 경우도 있으니 맨 뒤(arr[n-1])도 무시하고 읽어주면 된다.
이렇게 맨 앞, 맨 뒤가 공백일 경우는 해결해주었다.
다음으로 문자열 자체가 공백일 경우(입력받은게 없을 경우)를 생각했다. 입력받은게 없다면 공백이 들어가기 때문에(%[^\n]s)\를 써줘서 그럴 것이다. %[^\n]s이 무엇인지는 검색하면서 찾아보자, 알려주기만하면 재미가 없다.) 입력받은 값이 공백일 경우도 생각해 줘야한다.
이렇게 공백의 수를 세고 마지막으로 공백의 수 + 1 을 한 값을 단어의 개수로 넣어주면 된다.
필자는 엄청나게 시도했다. (중간에 "맞았습니다"는 다른분의 도움을 받았다.)
'Language > C' 카테고리의 다른 글
백준 2562번 : 최댓값 (포인터 풀이) (0) 2021.06.10 5주차 문자열과 문자열 처리함수 과제 (0) 2021.06.01 백준 2675번: 문자열 반복 (0) 2021.05.23 백준 2566번: 최댓값 (0) 2021.05.15 백준 2577번: 숫자의 개수 (0) 2021.05.15