단어집합(하) > 문제은행



실력키우기 문자열

1535 : 단어집합(하)

제한시간: 1000 ms    메모리제한: 32 MB
해결횟수: 939 회    시도횟수: 2184 회   



스트링을 입력 한 후, 스트링을 구성하는 단어들 중, 현재 단어목록에 포함이 되어있지 않은 단어를 단어목록의 가장 뒤에 추가하는 프로그램을 작성하시오.


(1) 처음에는 단어의 목록이 하나도 없다.
(2) 단어의 구분은 공백으로 한다.
(3) 스트링은 계속 입력받으며, 프로그램이 종료되지 않는 이상 기존의 단어들의 목록은 계속 유지된다.
(4) 목록에 단어가 없을 경우 단어를 목록의 가장 뒤에 추가하고, 있을경우 추가하지 않는다.
(5) 단어목록에는 입력되는 순서대로 저장된다.
(6) 알파벳 대.소문자는 구분된다(다르다).


입력되는 스트링의 최대 길이는 50이하이며, 스트링은 최대 10개 이하이다.
하나의 결과가 나온 후에도 계속 새로운 입력을 받다가, 스트링 값이 "END"이면 프로그램을 종료한다.


현재의 단어목록을 공백으로 구분하여 한줄에 한번씩 출력한다.

I am a boy
I am a girl
END
I am a boy
I am a boy girl


[행단위로 문자열을 입력받기] 

[개행에 관하여]

[행단위로 입력받은 문자열을 단어로 분리하기] 

int strlen(char*s, int i = 0){
	while (s[i]) i++;
	if (i && s[i - 1] == '\n') s[--i] = 0;
	if (i && s[i - 1] == '\r') s[--i] = 0;
	return i;
}

int strcmp(const char*s, const char*t){
	while (*s && *s == *t) s++, t++;
	return *s - *t;
}


void strcpy(char*dest, char*src){
	while (*dest++ = *src++);
}

char* strtok(char*ptr, char delim = ' '){
	/// 1. 단어의 시작위치 찾기 
	static char*p;                  /// 직전 탐색 위치를 유지하기 위하여 static 사용 
	if (ptr != NULL) p = ptr;        /// 새로운 문자열이 시작된 경우 
	while (*p && *p == delim) ++p;  /// 구분자가 아닌 첫 문자의 위치 찾기 
	/// trim leading or tailing or contiguous space 
	if (!*p) return NULL;          /// 입력 문자열 탐색이 끝남 

	/// 2. 단어의 종료위치 찾고, '\0'넣기 
	ptr = p;                        /// 단어의 시작위치를 ptr저장 
	while (*p && *p != delim) p++;  /// 현재 단어의 끝 찾기 
	if (*p) *p++ = 0;              /// 입력 문자열 끝이 아니라면 단어의 끝 표시 

	/// 3. 단어의 시작위치 반환 
	return ptr;
}


자료의 표현, 문자열

HancomEducation E-mail : hancomc@hotmail.com, comkiwer@naver.com Tel : 070-7163-5782 FAX : 031-388-0996 정올소개 이용약관 개인정보처리방침
경기도 안양시 동안구 호계동 1065-10 협성골드프라자 601호, 경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호
Copyright@2010-2015 jungol. All right reserved.