일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다이나믹 프로그래밍
- 백준
- 기초
- 게임 엔진 공부
- 2022년
- c++
- 3월
- 1월
- 유니티
- C/C++
- 유니티 심화과정
- 5월
- 2월
- 7월
- 프로그래머스
- 2023년
- 개인 프로젝트 - 런앤건
- 10월
- 2024년
- 골드메탈
- 단계별로 풀어보기
- 개인 프로젝트
- 입문
- 2025년
- 4월
- 수학
- 코딩 테스트
- todolist
- 자료 구조
- 코딩 기초 트레이닝
- Today
- Total
기록 보관소
[프로그래머스] 코딩 기초 트레이닝 PART 22(C++) 본문
프로그래머스 코딩 테스트 연습 : 코딩 기초 트레이닝(C++)
https://school.programmers.co.kr/learn/challenges?order=recent&languages=cpp&partIds=44139&page=6
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr
프로그래머스 코딩 기초 트레이닝 :
https://school.programmers.co.kr/learn/courses/30/lessons/181847
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
정수로 이루어진 문자열 n_str이 주어질 때, n_str의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 2 ≤ n_str ≤ 10
- n_str이 "0"으로만 이루어진 경우는 없습니다.
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
string solution(string n_str) {
for (int i = 0; i < n_str.size(); i++)
if (n_str[i] != '0')
return n_str.substr(i);
}
// 다른 사람의 풀이 : stoi를 사용하는 방법
#include <string>
#include <vector>
using namespace std;
string solution(string n_str) {
string answer = to_string(stoi(n_str));
return answer;
}
결과
프로그래머스 코딩 기초 트레이닝 : 두 수의 합
https://school.programmers.co.kr/learn/courses/30/lessons/181846
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ a의 길이 ≤ 100,000
- 1 ≤ b의 길이 ≤ 100,000
- a와 b는 숫자로만 이루어져 있습니다.
- a와 b는 정수 0이 아니라면 0으로 시작하지 않습니다.
입출력 예
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string a, string b) {
string answer = "";
int sizeA = a.size() - 1;
int sizeB = b.size() - 1;
int up = 0;
while(sizeA >= 0 || sizeB >= 0 || up > 0) {
int temp = up;
if (sizeA >= 0)
temp += a[sizeA--] - '0';
if (sizeB >= 0)
temp += b[sizeB--] - '0';
up = temp / 10;
answer += to_string(temp % 10);
}
reverse(answer.begin(), answer.end());
return answer;
}
결과
프로그래머스 코딩 기초 트레이닝 : 문자열로 변환
https://school.programmers.co.kr/learn/courses/30/lessons/181845
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
정수 n이 주어질 때, n을 문자열로 변환하여 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 10000
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
return to_string(n);
}
결과
프로그래머스 코딩 기초 트레이닝 : 배열의 원소 삭제하기
https://school.programmers.co.kr/learn/courses/30/lessons/181844
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
정수 배열 arr과 delete_list가 있습니다.
arr의 원소 중 delete_list의 원소를 모두 삭제하고 남은 원소들은 기존의 arr에 있던 순서를 유지한 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ arr의 길이 ≤ 100
- 1 ≤ arr의 원소 ≤ 1,000
- arr의 원소는 모두 서로 다릅니다.
- 1 ≤ delete_list의 길이 ≤ 100
- 1 ≤ delete_list의 원소 ≤ 1,000
- delete_list의 원소는 모두 서로 다릅니다.
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> arr, vector<int> delete_list) {
vector<int> answer;
for (auto num : arr) {
bool isDelete = false;
for (auto del : delete_list)
if (num == del)
isDelete = true;
if (!isDelete)
answer.push_back(num);
}
return answer;
}
// 다른 사람의 풀이 : arr에서 원소를 지우는 방법
#include <algorithm>
#include <vector>
using namespace std;
vector<int> solution(vector<int> v, vector<int> delete_list) {
for (const int& i : delete_list)
v.erase(remove_if(v.begin(), v.end(), [i](const int& x) { return x == i; }), v.end());
return v;
}
결과
프로그래머스 코딩 기초 트레이닝 : 부분 문자열인지 확인하기
https://school.programmers.co.kr/learn/courses/30/lessons/181843
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
부분 문자열이란 문자열에서 연속된 일부분에 해당하는 문자열을 의미합니다. 예를 들어, 문자열 "ana", "ban", "anana", "banana", "n"는 모두 문자열 "banana"의 부분 문자열이지만, "aaa", "bnana", "wxyz"는 모두 "banana"의 부분 문자열이 아닙니다.
문자열 my_string과 target이 매개변수로 주어질 때, target이 문자열 my_string의 부분 문자열이라면 1을, 아니라면 0을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 100
- my_string은 영소문자로만 이루어져 있습니다.
- 1 ≤ target의 길이 ≤ 100
- target은 영소문자로만 이루어져 있습니다.
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
int solution(string my_string, string target) {
for (int i = 0; i + target.size() <= my_string.size(); i ++)
if (target == my_string.substr(i, target.size()))
return 1;
return 0;
}
// 다른 사람의 풀이 : find 함수를 이용하는 방법
#include <string>
#include <vector>
using namespace std;
int solution(string my_string, string target) {
return (my_string.find(target) != -1);
}
결과
여담
이번 문제들은 크게 어렵진 않았지만 중간에 '두 수의 합' 문제가 stoi, stol, stoll 같은 문자열 변환 함수를 사용할 수 없어서 조금 돌아가야 했던게 좀 그랬다.
마지막 문제인 '부분 문자열 확인하기'는 find를 생각하지 못했던게 아쉬웠다.
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 코딩 기초 트레이닝 PART 24(C++) (5) | 2024.03.18 |
---|---|
[프로그래머스] 코딩 기초 트레이닝 PART 23(C++) (0) | 2024.03.15 |
[프로그래머스] 코딩 기초 트레이닝 PART 21(C++) (0) | 2024.03.12 |
[프로그래머스] 코딩 기초 트레이닝 PART 20(C++) (0) | 2024.02.15 |
[프로그래머스] 코딩 기초 트레이닝 PART 19(C++) (0) | 2024.02.13 |