프로그래머스 문제 풀이(2025.01.08)
- 문자열 내림차순으로 배치하기
문제 : 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한사항
- str은 길이 1 이상인 문자열입니다.
#include <string>
#include <vector>
#include <cctype> // 대소문자 구별
#include <algorithm> // sort 사용
using namespace std;
string solution(string s) { // 매개변수 s 할당
string answer = ""; // answer 선언
sort(s.begin(), s.end(), greater<char>()); // 내림차순으로 정렬
return s;
} // 대문자는 원래 소문자 앞에 위치하니 내림차순으로 정렬하면 자연스럽게 소문자보다 작아지게 됨
- 부족한 금액 계산하기
문제 : 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.
놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요.
단, 금액이 부족하지 않으면 0을 return 하세요.
제한사항
- 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수
- 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,000, money는 자연수
- 놀이기구의 이용 횟수 count : 1 ≤ count ≤ 2,500, count는 자연수
using namespace std;
long long solution(int price, int money, int count) // price, money, count의 매개변수
{
long long answer = money; // int인 money를 long long으로 변환
int P = price; // price의 초기값 유지를 위한 P 정의
while (count > 0){ // count가 0이 될 때 까지 (N번째 탑승)
answer -= price; // money에서 price의 값을 뺀다.
price += P; // price에 price 기초값을 계속 더하고
count--; // count를 한번씩 뺀
}
if (answer > 0){ // 만약 다 빼고도 돈이 남는다면
return 0; // 0을 반환하고
}
return answer * -1; // 돈이 부족하면 -1을 곱하며 얼마가 부족한지를 반환
}
- 문자열 다루기 기본
문제 : 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
제한사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
- s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
#include <string>
#include <vector>
#include <algorithm> // size 사용
using namespace std;
bool solution(string s) { // string s 매개변수
bool answer = true; // answer 정의
if (s.size() != 4 && s.size() != 6) { // s의 길이가 4, 6이 아닐 경우
return false; // false를 반환
}
for (char c : s){ // char c에 순차적으로 s를 대입
if(c<'0'|| c>'9'){ // c가 0~9가 아닐시
return false; // false를 반환
}
}
return answer;
}