[๋ฐฑ์ค] C 15์ผ์ฐจ (๋จ์ด์ ๊ฐ์ #1152๋ฒ) ๊ณต๋ฐฑํฌํจ ๋ฌธ์์ด ์ ๋ ฅ,strtok
https://www.acmicpc.net/problem/1152
1152๋ฒ: ๋จ์ด์ ๊ฐ์
์ฒซ ์ค์ ์์ด ๋์๋ฌธ์์ ๊ณต๋ฐฑ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ์ด ๋ฌธ์์ด์ ๊ธธ์ด๋ 1,000,000์ ๋์ง ์๋๋ค. ๋จ์ด๋ ๊ณต๋ฐฑ ํ ๊ฐ๋ก ๊ตฌ๋ถ๋๋ฉฐ, ๊ณต๋ฐฑ์ด ์ฐ์ํด์ ๋์ค๋ ๊ฒฝ์ฐ๋ ์๋ค. ๋ํ ๋ฌธ์์ด
www.acmicpc.net
1. ๋ฌธ์
์์ด ๋์๋ฌธ์์ ๊ณต๋ฐฑ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ์ด ๋ฌธ์์ด์๋ ๋ช ๊ฐ์ ๋จ์ด๊ฐ ์์๊น? ์ด๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ํ ๋จ์ด๊ฐ ์ฌ๋ฌ ๋ฒ ๋ฑ์ฅํ๋ฉด ๋ฑ์ฅํ ํ์๋งํผ ๋ชจ๋ ์ธ์ด์ผ ํ๋ค.
2. ์ ๋ ฅ
์ฒซ ์ค์ ์์ด ๋์๋ฌธ์์ ๊ณต๋ฐฑ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ์ด ๋ฌธ์์ด์ ๊ธธ์ด๋ 1,000,000์ ๋์ง ์๋๋ค. ๋จ์ด๋ ๊ณต๋ฐฑ ํ ๊ฐ๋ก ๊ตฌ๋ถ๋๋ฉฐ, ๊ณต๋ฐฑ์ด ์ฐ์ํด์ ๋์ค๋ ๊ฒฝ์ฐ๋ ์๋ค. ๋ํ ๋ฌธ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ์์ํ๊ฑฐ๋ ๋๋ ์ ์๋ค.
3. ์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋จ์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
4. ๋ฌธ์ ํ์ด
1) ๊ณต๋ฐฑ ํฌํจ ๋ฌธ์์ด ๋ฐ๊ธฐ
์ด ๋ฌธ์ ์ ๊ด๊ฑด์ ๊ณต๋ฐฑ ํฌํจ ๋ฌธ์์ด์ ์ด๋ป๊ฒ ์ ๋ ฅ๋ฐ๋์ง ์๋ค.
๊ทธ๋์ scanf๋ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๊ณต๋ฐฑ์ ๊น์ง์ ๋ฌธ์๋ฅผ ๋ฐ๋ ๊ฑฐ์๋ค. ๊ทธ๋์,
"The case study of baekjoon" ์ scanf๋ก ์
๋ ฅ๋ฐ์ผ๋ฉด
"The"๋ง ์ ์ฅ์ด ๋๋ค!
๊ทธ๋์!! ๊ณต๋ฐฑ ํฌํจ ๋ฌธ์์ด์ ๋ฐ๊ธฐ ์ํด์๋
scanf("%[^\n]s",arr)
๋ฅผ ์ฌ์ฉํ๋ค.
scanset character []๋ฅผ scanf ํจ์์ ์ถ๊ฐํด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค
[^๋ฌธ์] : ํด๋น ๋ฌธ์๊ฐ ๋์ค๊ธฐ ์ ๊น์ง ๋ชจ๋ ๋ฌธ์์ด์ ๋ฐ๊ฒ ๋ค
(์ํฐ)๋ฅผ ์๋ฏธํ๋ ๋ฌธ์์ธ "\n"๋ฅผ ^๋ค์ ๋ฃ์ด์ฃผ๋ฉด, ์ํฐ๊ฐ ๋์ค๊ธฐ ์ ๋ชจ๋ ๋ฌธ์์ด(๊ณต๋ฐฑ ํฌํจ)์ ๋ฐ๊ฒ ๋ค!
https://omyodevelop.tistory.com/120
[C/C++] C์ธ์ด ๊ณต๋ฐฑ ๋ฌธ์ ํฌํจํ ๋ฌธ์์ด ์ ๋ ฅ๋ฐ๋ ๋ฐฉ๋ฒ (scanf / fgets)
์๋ ํ์ธ์ omyo ์ ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋, ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ํฌํจํ ๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด์ ์๊ฐํด ๋๋ฆฌ๋ ค๊ณ ํฉ๋๋ค. scanf("%s",๋ฌธ์์ด) ์ ์ด์ฉํด์ ๋ฌธ์์ด์ ๋ฐ์ผ๋ฉด, scanf๋ ๊ณต๋ฐฑ์
omyodevelop.tistory.com
2) ๊ณต๋ฐฑ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด ์๋ฅด๊ธฐ
ํน์ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ์๋ฅด๊ธฐ ์ํด์๋ strtok ํจ์๋ฅผ ์ฌ์ฉํ๋ค(string.h)
C code
#include <stdio.h>
#include <string.h>
char arr[1000000];
int main()
{
int count =0;
scanf("%[^\n]s",arr);
char *ptr = strtok(arr, " ");
while(ptr !=NULL){
count++;
ptr = strtok(NULL, " ");
}
printf("%d\n",count);
return 0;
}