일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- c++
- 2023년
- 2022년
- 7월
- 10월
- 기초
- 코딩 테스트
- 백준
- todolist
- 유니티
- 다이나믹 프로그래밍
- 입문
- C/C++
- 유니티 심화과정
- 개인 프로젝트 - 런앤건
- 개인 프로젝트
- 2월
- 2025년
- 게임 엔진 공부
- 5월
- 프로그래머스
- 1월
- 코딩 기초 트레이닝
- 2024년
- 3월
- 수학
- 단계별로 풀어보기
- 자료 구조
- 골드메탈
- 4월
- Today
- Total
기록 보관소
[프로그래머스] 코딩 기초 트레이닝 PART 17(C++) 본문
프로그래머스 코딩 테스트 연습 : 코딩 기초 트레이닝(C++)
https://school.programmers.co.kr/learn/challenges?order=recent&languages=cpp&partIds=44139&page=5
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr
프로그래머스 코딩 기초 트레이닝 : 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/181872
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
문자열 myString과 pat가 주어집니다.
myString의 부분 문자열중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.
제한사항
- 5 ≤ myString ≤ 20
- 1 ≤ pat ≤ 5
- pat은 반드시 myString의 부분 문자열로 주어집니다.
- myString과 pat에 등장하는 알파벳은 대문자와 소문자를 구분합니다.
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
string solution(string myString, string pat) {
int idx = 0;
while(myString.find(pat, idx) != string::npos)
idx = myString.find(pat, idx) + pat.size();
return myString.substr(0, idx);
}
// 다른 사람의 풀이 : rfind를 사용하는 방법
#include <string>
#include <vector>
using namespace std;
string solution(string myString, string pat) {
return myString.substr(0, myString.rfind(pat)+pat.length());
}
결과
프로그래머스 코딩 기초 트레이닝 : 문자열이 몇 번 등자하는지 세기
https://school.programmers.co.kr/learn/courses/30/lessons/181871
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
문자열 myString과 pat이 주어집니다.
myString에서 pat이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤ myString ≤ 1000
- 1 ≤ pat ≤ 10
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
int solution(string myString, string pat) {
int idx = 0, count = 0;
while(myString.find(pat, idx) != string::npos) {
idx = myString.find(pat, idx) + 1;
count++;
}
return count;
}
결과
프로그래머스 코딩 기초 트레이닝 : ad 제거하기
https://school.programmers.co.kr/learn/courses/30/lessons/181870
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
문자열 배열 strArr가 주어집니다.
배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤ strArr의 길이 ≤ 1,000
- 1 ≤ strArr의 원소의 길이 ≤ 20
- strArr의 원소는 알파벳 소문자로 이루어진 문자열입니다.
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
vector<string> solution(vector<string> strArr) {
vector<string> answer;
for (auto str : strArr)
if(str.find("ad") == string::npos)
answer.push_back(str);
return answer;
}
// 다른 사람의 풀이 : remove_if를 사용해서 원소를 제거하고 return 하는 방법
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<string> solution(vector<string> v) {
return vector(v.begin(), remove_if(v.begin(), v.end(), [](string s) { return s.find("ad") != -1; }));
}
결과
프로그래머스 코딩 기초 트레이닝 : 공백으로 구분하기 1
https://school.programmers.co.kr/learn/courses/30/lessons/181869
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
단어가 공백 한 개로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- my_string은 영소문자와 공백으로만 이루어져 있습니다.
- 1 ≤ my_string의 길이 ≤ 1,000
- my_string의 맨 앞과 맨 뒤에 글자는 공백이 아닙니다.
입출력 예
코드
#include <string>
#include <vector>
#include <sstream>
using namespace std;
vector<string> solution(string my_string) {
vector<string> answer;
string word;
stringstream ss(my_string);
while (getline(ss, word, ' '))
answer.push_back(word);
return answer;
}
// 다른 사람의 풀이 1 : while 조건문에 getline 없이 해결하는 방법
#include <string>
#include <vector>
#include <sstream>
using namespace std;
vector<string> solution(string my_string) {
vector<string> answer;
string str;
stringstream ss;
ss.str(my_string);
while(ss >> str)
{
answer.emplace_back(str);
}
return answer;
}
// 다른 사람의 풀이 2 : 정규 표현식 regex로 해결하는 방법
#include <bits/stdc++.h>
using namespace std;
vector<string> solution(string my_string) {
regex rx(" ");
sregex_token_iterator iter(my_string.begin(), my_string.end(), rx, -1), end;
return {iter, end};
}
결과
프로그래머스 코딩 기초 트레이닝 : 공백으로 구분하기 2
https://school.programmers.co.kr/learn/courses/30/lessons/181868
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
단어가 공백 한 개 이상으로 구분되어 있는 문자열 my_string이 매개변수로 주어질 때, my_string에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- my_string은 영소문자와 공백으로만 이루어져 있습니다.
- 1 ≤ my_string의 길이 ≤ 1,000
- my_string의 맨 앞과 맨 뒤에도 공백이 있을 수 있습니다.
- my_string에는 단어가 하나 이상 존재합니다.
입출력 예
코드
#include <string>
#include <vector>
#include <sstream>
using namespace std;
vector<string> solution(string my_string) {
vector<string> answer;
string str;
stringstream ss(my_string);
while(ss >> str)
answer.push_back(str);
return answer;
}
결과
여담
오늘 풀었던 문제 중 3번째 문제 'ad 제거하기'에서 나도 처음에는 erase를 하여 문제를 풀려고 시도했었다.
테스트 케이스도 다 통과했었지만, 정작 제출해보니 3번 케이스부터 다 틀리고 말았고 결국 이해가 잘 안돼서 위와 같이 push_back으로 벡터를 만들어서 해결했다.
이후 질문하기를 통해서 틀린 이유를 찾아봤는데, 간단히 말하면 반복하는 과정에서 원소를 지울 경우 바로 뒤의 원소가 스킵되는 일이 발생할 수 있기 때문이라고 한다.
출처 : https://school.programmers.co.kr/questions/48354
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 코딩 기초 트레이닝 PART 19(C++) (0) | 2024.02.13 |
---|---|
[프로그래머스] 코딩 기초 트레이닝 PART 18(C++) (0) | 2024.02.08 |
[프로그래머스] 코딩 기초 트레이닝 PART 16(C++) (2) | 2024.02.02 |
[프로그래머스] 코딩 기초 트레이닝 PART 15(C++) (0) | 2024.02.01 |
[프로그래머스] 코딩 기초 트레이닝 PART 14(C++) (0) | 2024.01.30 |