문자열

    [Python] 문자열 관련 함수 총 정리

    type(변수) : 문자열(string) 문자열 표현법 4종 : '문자열', "문자열", ''''문자열''', """문자열""" 이스케이프 코드 1 (\ + 문자) : \n, \t, \\, \', \"\n : 줄바꿈\t : 탭간격\\, \', \" : 문자 표현 이스케이프 코드 2 (\ + 문자) : \b, \r\b : 백스페이스\r : 캐리지 리턴\f : 폼피드\v : 수직 탭\000: 널 문자열 연산자 : + , *문자열 + 문자열 : 문자열 간 연결문자열 * 정수 : 정수만큼 문자열 반복 자료형 변환 : strstr(값) : 값(실수, 정수, bool 등)을 문자열로 변환함 문자열 인덱싱 & 슬라이싱인덱싱 : 변수[인덱스]슬라이싱 : 변수[시작인덱스 : 종료인덱스] = a[x : x+3] = a[x..

    [Python] f-string (문자열)

    기존 문자열 방식 1. 더하기 키워드 person1 = "철수" person2 = "영희" print(person1 + "는 " + person2 + "를 좋아한데요!") 2. % 서식 person1 = "철수" person2 = "영희" print("%s는 %s를 좋아한데요!"%(person1, person2)) 3. str.format 함수 person1 = "철수" person2 = "영희" print("{}는 {}를 좋아한데요!".format(person1, person2)) 이렇게 그동안 사용해오던 문법들은 각 단어가 어느 부분에 전달되는지, 어떤 기호를 빼고 읽어야 하는지 깊게 관찰이 필요하지만 f-string은 매우 직관적이고 가독성이 뛰어나다. person1 = "철수" person2 = ..

    [C] 문자열에서 특정 문자 변경, 제거 그리고 중복 제거

    // 문자열에서 a 문자를 b 문자로 변경 // @param str 문자열 // @param cmp 바꾸고자 하는 문자 // @param rep 대체 문자 void ReplaceCharacter(char* str, char cmp, char rep) { if (str[0] == '\0') return; if (str[0] == cmp) str[0] = rep; ReplaceCharacter(str + 1, cmp, rep); } // 문자열에서 특정 문자를 제거 // @param str 문자열 // @param cmp 삭제하고자 하는 문자 void RemoveCharacter(char* str, char cmp) { if (str[0] == '\0') return; // 한 칸 씩 땡김 if (str[0..

    Boyer-Moore (보이어무어) 알고리즘 / 문자열 탐색

    개념 기존 고지식한 알고리즘과, KMP 알고리즘 혹은 지금까지 봐왔던 알고리즘들은 대부분 처음부터 비교해 나갈 것이지만 보이어-무어 알고리즘은 뒤에서부터 비교해나간다. 뒤에서부터 비교를 진행해 나가다 비교 값이 서로 다를 시 테이블을 참조해 나아간다. 아래는 보이어-무어 알고리즘으로 비교해 나아가는 이미지다. 뒤에서 비교하다 index 3번이 다르다는 것을 확인 후 테이블을 참조한다. 테이블을 참조 후 다음 비교할 위치로 건너뛴다. 그 다음 값을 보면 index 5, 6번이 다르지만 보이어-무어 알고리즘은 뒤에서부터 비교하므로 테이블 참조 시 index 6번에 대한 값을 참조하여 다음 비교 위치로 넘어긴다. 총 2번의 이동만으로 원하는 값을 찾아냈다. 만약 고지식한 알고리즘이었다면 2번 이동했을 때쯤 i..

    KMP (문자열 중 특정 패턴을 찾아내는 탐색) 알고리즘 C++ 구현

    개념 KMP 알고리즘은 문자열에서 특정 패턴을 효율적으로 찾을 수 있다. 살펴볼 문자열의 길이가 N, 찾고 싶은 패턴의 길이가 M이라면 O(N+M)의 시간 복잡도를 가지는 매우 효율적인 알고리즘이다. KMP 알고리즘이 얼마나 효율적인지 알기 전에, 모든 문자열을 일일이 비교하는 경우를 살펴보자. 모든 문자열을 일일이 비교하는 경우(브루트 포스 : Brute Force) "ABCDABCE"라는 문자열에서 "ABCE"라는 패턴을 찾는다고 해보자. 모든 문자열을 일일이 비교한 경우엔 아래와 같이 탐색을 진행할 것이다. 이처럼 모든 문자열을 비교하는 브루트 포스(Brute Force) 방식은 텍스트의 길이를 N, 찾고자 하는 패턴의 길이를 M이라고 했을 때 시간 복잡도가 O(NM)이다. 이는 매우 비효율적이다...

    [C++] 문자열 입력 istream::getline()과 string의 getline()

    1. std::istream::getline - cin.getline() 인자: s - C 형식 문자열을 저장할 배열을 가리키는 포인터 n - 저장할 문자의 최대 개수 (끝의 종료 널 문자를 포함한 값). 만약 입력 스트림의 최대 크기에 도달하여 입력이 중단되면 failbit 플래그가 설정된다. delim - 제한자로 이 문자에 도달시 추출이 중단다. 이 때 이 문자는 s에 기록되지는 않지만 스트림에서 사라지게 된다. 즉 istream을 상속받는 클래스에서 getline()함수를 사용할 수 있다. 콘솔에서 문자열을 입력받으려면 cin.getline()을, 파일으로부터 문자열을 가져오려면 파일입력스트림인 ifstream의 인스턴스에서 getline()을 호출하면 된다. #include #include //..

    [C++] 문자열 (string) 함수 모음

    length() 메소드와 size() 메소드 length() 메소드는 문자열의 길이를 반환하는 메소드다. size() 메소드도 length() 메소드와 언제나 같은 값을 반환하지만, 그 의미는 약간 다르다. length() 메소드는 문자열의 길이를 나타내지만, size() 메소드는 해당 string 객체가 메모리에서 실제 사용하고 있는 크기를 나타낸다. string str1; string str2 = "C++ Programming"; cout

    [Python] 기본 자료형 1(숫자형, 문자열, bool형, None)

    [숫자형] 숫자형에는 int(정수형), float(실수형), complex(복소수)가 있다. - integer(정수형) 말 그대로 양의 정수, 음의 정수, 0을 포함하는 자료형이다. a = 123 b = -123 c = 0 파이썬 2.x 버전에서는 엄청 큰 숫자를 담기 위한 long 타입이 존재했지만, 3.x부터는 long 타입이 사라지고, int 타입이 크기 제한이 없는 부호있는 정수형이 되었다. 파이썬 정수형의 크기는 컴파일러에 의해서가 아닌 컴퓨터 메모리에 의해서만 제한된다. 8진수(ex, 0o65)나 16진수(ex, 0x1FF)로도 표현이 가능하다. a = 0o65 b = 0x1FF - float(실수형) 실수형은 소수점이 포함된 숫자를 의미한다. 다른 언어처럼 float와 double 타입이 따..

    [C] 포인터로 문자열 선언, 배열 문자열 선언과 차이. (문자열 내부 변경하기)

    문자열(string)이란, 알파벳 하나하나가 메모리상의 연속적으로 나열되며, 마지막에는 '\0' (NULL)으로 끝나는 배열이다. 위 그림과 같이 문자열을 만드는 방법은 아래와 같다. char string[11] = "hello world"; char이므로 한칸당 1byte를 사용하며, "~~"문자열 맨 뒤에 \0 (NULL)문자는 자동으로 들어가게 된다. 고로 띄어쓰기를 포함한 모든 문자들 공간과 마지막의 NULL이 들어갈공간을 포함해 11개의 공간을 선언했다. C언어로 문자열을 표현하는 방법은 대표적으로 배열선언과 포인터 선언이 있다. 배열도 "상수형 포인터"로 결국 포인터와 동일한 역할을 한다. 배열으로 선언하는 방법은 메모리공간을 미리 할당하는 방법과, 컴파일러가 문자열 길이를 보고 알아서 할당시..

    [C] 문자열(string) 입출력 (puts, fputs, gets, fgets) 사용법

    문자열 출력 함수로 : puts, fputs 가 있다. 출력 함수 puts - 함수 원형: int puts(const char * string) - 반환형이 int인 이유? char형은 컴파일러마다 unsigned, signed가 다른데, int는 모든 컴파일러가 signed int로 처리함. - int형 이므로 어떤 컴파일러든 -1값(EOF)을 반환하는데 무리가 없다. - 자동으로 문자열 맨뒤 '\n' 개행이 붙는다. - char * 이므로 메모리상의 특정 문자열의 주소값이 그데로 전달 됨을 알 수 있다. 출력 함수 fputs - 함수 원형: int puts(const char * string, FILE * stdout) - 반환형이 int인 이유? char형은 컴파일러마다 unsigned, signe..