#include <stdio.h>
#include <string.h>

#define MAX_STRING_LENGTH		100
#define MAX_MATCH_STRING_LENGTH	20
#define MAX_ASCII_LENGTH		255

bool check_match(char str[], char match[]);
void mark_ascii_flag(char str[], bool flag[]);

void mark_ascii_flag(char str[], bool flag[])
{
/*
	'pointer' & 'while' style
 */
	char * pCurr = str;
	
	while(*pCurr)
	{
		flag[*pCurr] = true;
		pCurr++;
	}

/*
	'for' & 'strlen' style
 */
/*
	int i = 0, strLen = strlen(str);
	for(i = 0 ; i < strLen ; i++)
		flag[str[i]] = true;
*/
}

bool check_match(char str[], char match[])
{
	int i, curr_match_idx = 0;

	bool match_flag[MAX_ASCII_LENGTH] = {false, };

	// make right match flag array
	bool comp_match_flag[MAX_ASCII_LENGTH] = {false, };

	// O(N+M)	
	mark_ascii_flag(match, comp_match_flag);
	mark_ascii_flag(str, match_flag);

	// Compare two Flag Arrays
	for(i = 0 ; i < MAX_ASCII_LENGTH ; i++)
	{
		if(comp_match_flag[i] == true && 
			match_flag[i] == false)
			return false;
	}

	return true;
}

void get_input(char str[])
{
	printf("Type any letters whatever you want:");
	scanf("%s", str);
}

int main()
{
	char input_str[MAX_STRING_LENGTH];
	char match[MAX_MATCH_STRING_LENGTH] = "IloveKorea";
	
	//get_input(input_str);
	
	// codepad.org 에서는 standard input 을 못 받으므로 대신 처리
	// 아래 라인을 주석 처리하고 get_input 라인을 주석 해제하면 입력을 받아서 처리
	//strcpy(input_str, "Iabcloabcjdvjse   sdkkjKjksdoancrjekka");
	strcpy(input_str, "asdjkeorkjdoKKKjjjdvdseksdoljjcmnI");

	if(check_match(input_str, match))
		printf("I love Korea\n");
		
	return 0;
}
