프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
transform을 활용해서 바로 풀어봤다.
#include <string>
#include <algorithm>
using namespace std;
string solution(string myString) {
transform(myString.begin(), myString.end(), myString.begin(),[](char x) { return (x < 'l') ? 'l' : x; });
return myString;
}
저번에는 transform이 이런거다 라고만 알았는데, 쓸려면 확실히 알아야했다.
그래서 GPT에게 정확한 람다식에 대해서 물어봤다.
주어진 lambda 함수 `[](char x) { return (x < 'l') ? 'l' : x; }`는 각 문자를 비교하여 조건에 따라 변환하는 역할을 수행합니다.
- `[](char x)`: 이 부분은 lambda 함수의 선언입니다. `char x`는 lambda 함수가 입력으로 받을 변수의 형식과 이름을 정의합니다. 이 경우 입력 변수 `x`는 문자(`char`) 형식을 가지며, 문자열의 각 문자에 대해 적용됩니다.
- `{ return (x < 'l') ? 'l' : x; }`: 이 부분은 lambda 함수의 본문입니다.
- `(x < 'l')`: `x`가 `'l'`보다 작은지 비교하는 조건입니다. 즉, `x`가 `'a'`부터 `'k'`까지의 문자 중 하나인지 판단합니다.
- `? 'l' : x;`: 조건 연산자(삼항 연산자)입니다. 조건 `(x < 'l')`이 참이라면 `'l'`를 반환하고, 거짓이면 `x`를 반환합니다. 이 부분을 통해 `x`가 `'l'`보다 작다면 `x`를 `'l'`로 바꿔줍니다.
즉, 이 lambda 함수는 입력된 문자 `x`가 `'l'`보다 작은지 검사하여, 작다면 `'l'`로 변경하고, 그렇지 않다면 그대로 반환합니다. 이 함수는 `std::transform`을 통해 문자열의 각 문자에 대해 적용되어, 문자열을 원하는 방식으로 변환합니다.
'PS > 프로그래머스' 카테고리의 다른 글
Lv0 조건에 맞게 수열 변환하기 3 (0) | 2024.04.11 |
---|---|
Lv1 숫자 문자열과 영단어 (0) | 2023.12.26 |
Lv1 3진법 뒤집기 (0) | 2023.12.21 |
Lv1 문자열 다루기 기본 (0) | 2023.12.21 |
Lv0 OX퀴즈 (0) | 2023.07.17 |