일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 골드메탈
- 2023년
- todolist
- 3월
- 수학
- 7월
- 입문
- 다이나믹 프로그래밍
- 2025년
- C/C++
- 4월
- 유니티
- 5월
- 게임 엔진 공부
- 코딩 테스트
- 1월
- 코딩 기초 트레이닝
- 기초
- 프로그래머스
- 유니티 심화과정
- 자료 구조
- 개인 프로젝트
- 2022년
- 개인 프로젝트 - 런앤건
- c++
- 2024년
- 단계별로 풀어보기
- 백준
- 2월
- 6월
- Today
- Total
기록 보관소
[프로그래머스] 코딩 기초 트레이닝 PART 23(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/181842
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
어떤 문자열 A가 다른 문자열 B안에 속하면 A를 B의 부분 문자열이라고 합니다.
예를 들어 문자열 "abc"는 문자열 "aabcc"의 부분 문자열입니다.
문자열 str1과 str2가 주어질 때, str1이 str2의 부분 문자열이라면 1을 부분 문자열이 아니라면 0을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ str1 ≤ str2 ≤ 20
- str1과 str2는 영어 소문자로만 이루어져 있습니다.
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
int solution(string str1, string str2) {
return (str2.find(str1) != string::npos);
}
결과
프로그래머스 코딩 기초 트레이닝 : 꼬리 문자열
https://school.programmers.co.kr/learn/courses/30/lessons/181841
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
문자열들이 담긴 리스트가 주어졌을 때, 모든 문자열들을 순서대로 합친 문자열을 꼬리 문자열이라고 합니다.
꼬리 문자열을 만들 때 특정 문자열을 포함한 문자열은 제외시키려고 합니다.
예를 들어 문자열 리스트 ["abc", "def", "ghi"]가 있고 문자열 "ef"를 포함한 문자열은 제외하고 꼬리 문자열을 만들면 "abcghi"가 됩니다.
문자열 리스트 str_list와 제외하려는 문자열 ex가 주어질 때, str_list에서 ex를 포함한 문자열을 제외하고 만든 꼬리 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 2 ≤ str_list의 길이 ≤ 10
- 1 ≤ str_list의 원소의 길이 ≤ 10
- 1 ≤ ex의 길이 ≤ 5
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
string solution(vector<string> str_list, string ex) {
string answer = "";
for (auto str : str_list)
if (str.find(ex) == string::npos)
answer += str;
return answer;
}
결과
프로그래머스 코딩 기초 트레이닝 : 정수 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/181840
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
정수 리스트 num_list와 찾으려는 정수 n이 주어질 때, num_list안에 n이 있으면 1을 없으면 0을 return하도록 solution 함수를 완성해주세요.
제한사항
- 3 ≤ num_list의 길이 ≤ 100
- 1 ≤ num_list의 원소 ≤ 100
- 1 ≤ n ≤ 100
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> num_list, int n) {
for (auto num : num_list)
if (num == n)
return 1;
return 0;
}
결과
프로그래머스 코딩 기초 트레이닝 : 주사위 게임 1
https://school.programmers.co.kr/learn/courses/30/lessons/181839
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
1부터 6까지 숫자가 적힌 주사위가 두 개 있습니다.
두 주사위를 굴렸을 때 나온 숫자를 각각 a, b라고 했을 때 얻는 점수는 다음과 같습니다.
- a와 b가 모두 홀수라면 a^2 + b^2 점을 얻습니다.
- a와 b 중 하나만 홀수라면 2 × (a + b) 점을 얻습니다.
- a와 b 모두 홀수가 아니라면 |a - b| 점을 얻습니다.
두 정수 a와 b가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
제한사항
- a와 b는 1 이상 6 이하의 정수입니다.
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
int solution(int a, int b) {
if (a % 2 != 0 && b % 2 != 0)
return a*a + b*b;
else if (a % 2 != 0 || b % 2 != 0)
return 2 * (a + b);
else
return abs(a - b);
}
// 다른 사람의 풀이 : & 연산을 사용하는 방법
#include <string>
#include <vector>
using namespace std;
int solution(int a, int b) {
if (a%2 && b%2) return a*a+b*b;
else if (a%2 || b%2) return 2*(a+b);
else return abs(a-b);
}
결과
프로그래머스 코딩 기초 트레이닝 : 날짜 비교하기
https://school.programmers.co.kr/learn/courses/30/lessons/181838
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
정수 배열 date1과 date2가 주어집니다. 두 배열은 각각 날짜를 나타내며 [year, month, day] 꼴로 주어집니다. 각 배열에서 year는 연도를, month는 월을, day는 날짜를 나타냅니다.
만약 date1이 date2보다 앞서는 날짜라면 1을, 아니면 0을 return 하는 solution 함수를 완성해 주세요.
제한사항
- date1의 길이 = date2의 길이 = 3
- 0 ≤ year ≤ 10,000
- 1 ≤ month ≤ 12
- day는 month에 따라 가능한 날짜로 주어집니다.
입출력 예
코드
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> date1, vector<int> date2) {
return (date1 < date2);
}
// 다른 사람의 풀이 : if-else 문을 사용하는 방법
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> date1, vector<int> date2) {
if(date1[0] == date2[0])
{
if(date1[1] == date2[1])
{
return date1[2] < date2[2];
}
else
{
return date1[1] < date2[1];
}
}
else
{
return date1[0] < date2[0];
}
}
결과
여담
마지막 문제 '날짜 비교하기'는 다른 사람의 풀이처럼 if-else 문으로만 해결하려고 했다가 너무 길어지고 복잡해질 것 같았다.
그래서 혹시 함수로 해결이 가능할까? 싶어서 벡터 내부 원소들을 비교하는 함수가 있는지 찾아봤는데, 우연히 두 벡터 a와 b가 같은지 비교하는 것을 if문 조건으로 'a == b'로 하면 해결 가능하다는 것을 보게 되었다.
이를 보고 원소 크기 비교도 가능한지 시도해보았고, 다행히 잘 작동되어서 문제를 해결할 수 있었다.
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 코딩 기초 트레이닝 PART 25(C++)(完) (0) | 2024.03.19 |
---|---|
[프로그래머스] 코딩 기초 트레이닝 PART 24(C++) (5) | 2024.03.18 |
[프로그래머스] 코딩 기초 트레이닝 PART 22(C++) (0) | 2024.03.14 |
[프로그래머스] 코딩 기초 트레이닝 PART 21(C++) (0) | 2024.03.12 |
[프로그래머스] 코딩 기초 트레이닝 PART 20(C++) (0) | 2024.02.15 |