1️⃣ 알고리즘 코드카타
▪ 문자(char)도 아스키 범위 초과하면 오버플로우 발생
https://school.programmers.co.kr/learn/courses/30/lessons/12926
▪ 스위치 조건문의 조건
정수형 상수값(정수, 문자, 열거형)만 조건으로 사용 가능
https://school.programmers.co.kr/learn/courses/30/lessons/81301
2️⃣C++ 복습
▪ 컨테이너의 복사
//둘 다 깊은 복사(컨테이너의 대입 연산은 깊은 복사)
vector<int> vec4(vec3);
//복사생성자 명시적으로 호출
vector<int> vec4 = vec3
//컴파일러가 내부적으로 복사 생성자 호출
1️⃣ 3주차 과제
🔹 좌표 이동 프로그램
C++ 라이브코딩는 너무 오래걸리고...컴파일러 로그도 불친절하군...
https://dotnet.microsoft.com/ko-kr/download/dotnet/thank-you/sdk-6.0.428-windows-x64-installer
2️⃣ 추가 공부
🔹 regex
상황 : 코드카타 알고리즘 숫자열과 문자열을 regex로 푼 풀이가 있었다.
regex : 문자열에서 패턴 매칭, 문자열 검색, 치환 등의 작업을 쉽게 수행 가능
#include <regex>
1. regex 사용 기본 구조
- std::regex: 정규 표현식 패턴을 정의.
- std::regex_match: 문자열이 정규 표현식 전체와 일치하는지 확인.
- std::regex_search: 문자열 내에 정규 표현식과 일치하는 부분이 있는지 확인.
- std::regex_replace: 정규 표현식과 일치하는 부분을 치환.
2. 정규 표현식 기초 문법
. | 임의의 문자 한 개 | a.b → acb, a3b |
^ | 문자열의 시작 | ^abc → abc |
$ | 문자열의 끝 | abc$ → abc |
* | 0개 이상의 반복 | a* → aaa, a |
+ | 1개 이상의 반복 | a+ → aaa, a |
? | 0개 또는 1개의 반복 | a? → a, 빈 문자열 |
{n} | 정확히 n번 반복 | a{3} → aaa |
{n,} | 최소 n번 이상 반복 | a{2,} → aa, aaa |
{n,m} | n번 이상 m번 이하 반복 | a{2,4} → aa, aaa |
[] | 문자 집합 | [abc] → a, b, c |
` | ` | OR 연산 |
\\\\d | 숫자 | \\\\d+ → 123, 456 |
\\\\w | 알파벳/숫자/밑줄 ([a-zA-Z0-9_]) | \\\\w+ → hello_123 |
\\\\s | 공백 문자 (space, tab, newline) | \\\\s+ → 공백 |
3. 예시
#include <iostream>
#include <regex>
using namespace std;
int main() {
string text = "Hello, my email is example@domain.com.";
regex pattern("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}");
//정규 표현식 패턴을 정의하는 객체 생성
// regex_search로 매칭 검사
if (regex_search(text, pattern)) {
cout << "Valid email found!" << endl;
} else {
cout << "No valid email found." << endl;
}
string text = "The phone number is 123-456-7890.";
regex pattern("\\d{3}-\\d{3}-\\d{4}"); // 전화번호 패턴
if (regex_search(text, pattern)) {
cout << "Phone number found!" << endl;
} else {
cout << "Phone number not found." << endl;
}
string text = "My phone number is 123-456-7890.";
regex pattern("\\d{3}-\\d{3}-\\d{4}");
string result = regex_replace(text, pattern, "XXX-XXX-XXXX");
cout << result << endl; // 출력: My phone number is XXX-XXX-XXXX.
return 0;
}
'TIL' 카테고리의 다른 글
[250109 TIL] 상속의 virtual 키워드 (0) | 2025.01.09 |
---|---|
[250108 TIL] 언리얼 C++ 사용하면서 주의할 점 (0) | 2025.01.08 |
[250106 TIL] 정적/동적 배열과 벡터, 생성자와 소멸자에서 놓쳤던 부분 (0) | 2025.01.06 |
[250103 TIL] 알고리즘 코드카타로 유클리드 호제법, C++ 복습하며 L/RValue 추가 공부 (0) | 2025.01.03 |
[250102 TIL] switch반복문에 열거형 입력 (0) | 2025.01.02 |