일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 입문
- 유니티 심화과정
- 개인 프로젝트 - 런앤건
- 골드메탈
- 10월
- 5월
- 다이나믹 프로그래밍
- 기초
- 코딩 기초 트레이닝
- 단계별로 풀어보기
- 유니티
- 2024년
- 7월
- 자료 구조
- 개인 프로젝트
- C/C++
- 2022년
- 2025년
- c++
- 1월
- 4월
- 게임 엔진 공부
- 프로그래머스
- todolist
- 수학
- 3월
- 백준
- 코딩 테스트
- 2월
- 2023년
- Today
- Total
기록 보관소
[프로그래머스] 코딩 기초 트레이닝 PART 11(C++) 본문
프로그래머스 코딩 테스트 연습 : 코딩 기초 트레이닝(C++)
https://school.programmers.co.kr/learn/challenges?order=recent&languages=cpp&partIds=44139&page=3
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr
프로그래머스 코딩 기초 트레이닝 : 문자 개수 세기
https://school.programmers.co.kr/learn/courses/30/lessons/181902
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 1,000
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
vector<int> solution(string my_string) {
vector<int> answer(52,0);
int n = 65;
for (int i = 0; i < 52; i++) {
if (i >= 26)
n = 71;
for (int j = 0; j < my_string.size(); j++)
if (my_string[j] == (i + n))
answer[i]++;
}
return answer;
}
// 다른 사람의 풀이 1 : 배열의 index에 문자를 빼는 방법
#include <string>
#include <vector>
using namespace std;
vector<int> solution(string my_string) {
vector<int> answer(52,0);
for(const auto& ch : my_string)
{
if(ch>='a')
{
answer[(ch-'a')+26]++;
}
else
{
answer[ch-'A']++;
}
}
return answer;
}
// 다른 사람의 풀이 2 : isupper, islower를 사용한 방법
#include <string>
#include <vector>
using namespace std;
vector<int> solution(string my_string) {
vector<int> answer(52);
for(const auto c : my_string)
{
if(isupper(c))
{
answer[c-'A']++;
}
else if(islower(c))
{
answer[c-'a'+26]++;
}
}
return answer;
}
결과
프로그래머스 코딩 기초 트레이닝 : 배열 만들기 1
https://school.programmers.co.kr/learn/courses/30/lessons/181901
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
정수 n과 k가 주어졌을 때, 1 이상 n이하의 정수 중에서 k의 배수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤ n ≤ 1,000,000
- 1 ≤ k ≤ min(1,000, n)
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int n, int k) {
vector<int> answer;
for (int i = 1; i <= n; i++)
if (i % k == 0)
answer.push_back(i);
return answer;
}
// 다른 사람의 풀이 : for문만으로 해결하는 방법
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int n, int k) {
vector<int> answer;
for(int t = k; t <= n; t += k)
{
answer.emplace_back(t);
}
return answer;
}
결과
프로그래머스 코딩 기초 트레이닝 : 글자 지우기
https://school.programmers.co.kr/learn/courses/30/lessons/181900
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
문자열 my_string과 정수 배열 indices가 주어질 때, my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ indices의 길이 < my_string의 길이 ≤ 100
- my_string은 영소문자로만 이루어져 있습니다.
- 0 ≤ indices의 원소 < my_string의 길이
- indices의 원소는 모두 서로 다릅니다.
입출력 예
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string my_string, vector<int> indices) {
sort(indices.begin(), indices.end(), greater<>());
for (int i : indices)
my_string.erase(i, 1);
return my_string;
}
// 다른 사람의 풀이 : 삭제할 문자를 빈칸으로 바꾼 후, 빈칸을 제거하는 방법
#include <string>
#include <vector>
using namespace std;
string solution(string my_string, vector<int> indices) {
string answer = "";
for(const auto v : indices)
{
my_string[v] = ' ';
}
for(const auto c : my_string)
{
if(c != ' ')
{
answer += c;
}
}
return answer;
}
결과
프로그래머스 코딩 기초 트레이닝 : 카운트 다운
https://school.programmers.co.kr/learn/courses/30/lessons/181899
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
정수 start_num와 end_num가 주어질 때, start_num에서 end_num까지 1씩 감소하는 수들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤ end_num ≤ start_num ≤ 50
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int start, int end_num) {
vector<int> answer;
for (int i = start; i >= end_num; i--)
answer.push_back(i);
return answer;
}
결과
프로그래머스 코딩 기초 트레이닝 : 가까운 1 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/181898
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
정수 배열 arr가 주어집니다. 이때 arr의 원소는 1 또는 0입니다.
정수 idx가 주어졌을 때, idx보다 크면서 배열의 값이 1인 가장 작은 인덱스를 찾아서 반환하는 solution 함수를 완성해 주세요.
단, 만약 그러한 인덱스가 없다면 -1을 반환합니다.
제한사항
- 3 ≤ arr의 길이 ≤ 100'000
- arr의 원소는 전부 1 또는 0입니다.
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> arr, int idx) {
int answer = -1;
for (int i = idx; i < arr.size(); i++)
if (arr[i] == 1) {
answer = i;
break;
}
return answer;
}
// 다른 사람의 풀이 : 변수를 사용하지 않고 해결한 방법
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> arr, int idx) {
for (int i = 0; i < arr.size(); ++i)
if (i >= idx && arr[i] == 1)
return i;
return -1;
}
결과
여담
첫 번째 문제인 문자 개수 세기는 진짜 쉽게 해결할 수 있었는데 중간에 생각을 잘못해서 점점 꼬여버렸고 결국 되게 비효율적인 코드를 완성했다. 아무래도 실력 향상이 더 필요할 것 같다..
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 코딩 기초 트레이닝 PART 13(C++) (0) | 2024.01.29 |
---|---|
[프로그래머스] 코딩 기초 트레이닝 PART 12(C++) (0) | 2024.01.19 |
[프로그래머스] 코딩 기초 트레이닝 PART 10(C++) (0) | 2024.01.17 |
[프로그래머스] 코딩 기초 트레이닝 PART 9(C++) (0) | 2024.01.16 |
[프로그래머스] 코딩 기초 트레이닝 PART 8(C++) (2) | 2024.01.15 |