문자열
-
문자열 파싱 연습하기(feat. strtok_s)개발/C·C++ 2024. 7. 4. 16:39
C 표준 함수인 strtok_s는 원본 배열에 건드리기 때문에 const char*을 인수로 받지 않는다. 구분자는 하나의 문자열에 넣어주면 되고 내부 상태값을 유지하기 위해 외부에서 선언한 포인터 변수의 주소를 전달하면 된다. 여기서 말하는 내부 상태 값은 원본 문자열을 검색할 때 다음의 시작 주소다. strtok_s과 동일한 로직을 가지고 사용법도 동일한 MyStrTok을 구현해보자. #include char* MyStrTok(char* string, const char* delimeter, char** context);bool IsDelimiter(char ch, const char* delimiter);int main() { char buffer_string[64] = { "data = x + y..
-
[프로그래머스] 문자열 압축알고리즘/프로그래머스 2021. 7. 12. 22:10
문제 링크 문자열을 잘 자르기만 하면 됩니다. 하나씩 자를 때는 하나씩 비교하면 되고 두 개씩 자를 때는 두 칸씩 이동하면서 비교해야 합니다. 문자열의 길이가 8인데 자르는 갯수가 3일 때는 나누어 떨어지지 않습니다. 이럴 때는 나머지를 꼭 뒤에 붙여줘야 하겠습니다. string의 += 연산자는 append()를 감싸는 형태입니다. 코드 #include #include using namespace std; int min(int a, int b) { return a < b ? a : b; } int solution(string s) { int answer = s.size(); for (int i = 1; i
-
[프로그래머스] 가장 큰 수알고리즘/프로그래머스 2021. 7. 6. 20:49
문자열 정렬에 대해 한 번 더 생각해보게 되는 문제입니다. 두 문자열 "31", "9"를 이용해 만들 수 있는 가장 수의 문자열 형태는 "931"입니다. 이 경우는 오름차순만해도 답이 되지만, "3", "31", "9"는 "9331"이 최대 숫자이므로 단순한 오름차순, 내림차순으로는 답을 구할 수 없습니다. 이 문제를 풀기 위해서는 각 문자열을 비교할 때 그 둘을 이어 붙여 만든 문자열 중 큰 것을 기준해서 내림차순을 하면 됩니다. 가령 "31"과 "9"를 비교하면 "931"이 "319"보다 크므로 "9", "31" 순서로 정렬이 되는 거죠. 한 가지 예외 상황이 있는데 인수에 0이 여러 개 들어있다면 그 들어있는 0만큼 결과가 나온다는 겁니다. {0, 0, 0}을 인수로 넣으면 답이 000이 되는 거죠..
-
[프로그래머스] 문자열 내 마음대로 정렬하기알고리즘/프로그래머스 2020. 2. 13. 20:57
문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예 strings n return [sun, bed, car] 1 [car..