- 서울에서 김서방 찾기
문제 : String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
제한사항
- seoul은 길이 1 이상, 1000 이하인 배열입니다.
- seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
- "Kim"은 반드시 seoul 안에 포함되어 있습니다.
#include <string>
#include <vector>
#include <algorithm> // auto it을 사용하기 위해 추가
using namespace std;
string solution(vector<string> seoul) {
auto it = find(seoul.begin(), seoul.end(), "Kim"); // seoul의 시작, 끝에서 Kim을 찾는다.
int i = distance(seoul.begin(), it); // seoul 시작점부터 찾아낸 거리를 i라고 둔다.
return "김서방은 " + to_string(i) + "에 있다";
}
- 나누어 떨어지는 숫자 배열
문제 : array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
제한사항
- arr은 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다.
#include <string>
#include <vector>
#include <algorithm> // sort를 사용하기 위해 algorithm을 사용
using namespace std;
vector<int> solution(vector<int> arr, int divisor) {
vector<int> answer; // 벡터 선언
sort(arr.begin(), arr.end()); // 배열을 오름차순으로 정렬
for(int i = 0; i < arr.size(); i++){
if(arr[i] % divisor == 0){ // 배열의 i번째가 짝수이면
answer.push_back(arr[i]); // 배열의 i번째에 추가
}
}
if(answer.empty()){ // 답변이 비어있으면
answer.push_back(-1); // -1을 출력
}
return answer;
}
- 음양 더하기
문제 : 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한사항
- absolutes의 길이는 1 이상 1,000 이하입니다.
- absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
- signs의 길이는 absolutes의 길이와 같습니다.
- signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> absolutes, vector<bool> signs) {
int answer = 0; // 답변 선언
for(int i = 0; i < absolutes.size(); i++){ // 정수 배열의 길이만큼 반복문 실행
if (signs[i]){ // i번째 signs이 참일 때
answer += absolutes[i]; // 답변에 i번째 정수를 더함
}
else {answer -= absolutes[i];} // 그렇지 않다면 (거짓) i번째 정수를 뺌
}
return answer;
}
- 핸드폰 번호 가리기
문제 : 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한사항
- phone_number는 길이 4 이상, 20이하인 문자열입니다.
#include <string>
#include <vector>
using namespace std;
string solution(string phone_number) {
string answer = phone_number;
for (int i = 0; i < phone_number.size() - 4; i++){ // 휴대폰 번호 길이 - 4만큼 반복
answer[i] = '*'; // i가 반복된 횟수만큼 앞자리를 *로 치환
}
return answer;
}
'프로그래머스 풀이' 카테고리의 다른 글
프로그래머스 문제 풀이(2025.01.08) (3) | 2025.01.08 |
---|---|
프로그래머스 문제 풀이(2025.01.07) (0) | 2025.01.07 |