알고리즘/programmers

[Programmers] 숫자 짝궁

꾸준함. 2022. 10. 10. 23:53

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/131128

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

간단한 문자열 처리 문제였습니다.

 

알고리즘은 아래와 같습니다.

1. X를 순회하며 각 숫자가 몇 번 나왔는지 확인합니다.

2. Y를 순회하면서 1번에서 구한 짝꿍들을 문자열 s에 추가합니다.

3. 2번을 마치고도 s가 빈 문자열이면 짝궁이 없으므로 "-1"을 반환합니다.

4. s가 0으로만 구성되면 "0"을 반환합니다.

5. 3번 혹은 4번에서 프로그램이 종료가 안 되었다면 s를 내림차순 정렬한 뒤 반환합니다.

 

#include <string>
#include <map>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
bool onlyZero(string s)
{
for (char c : s)
{
if (c != '0')
{
return false;
}
}
return true;
}
string solution(string X, string Y) {
map<char, int> visited;
for (char c : X)
{
visited[c]++;
}
string s;
for (char c : Y)
{
if (visited[c] != 0)
{
s += c;
visited[c]--;
}
}
if (s == "")
{
return "-1";
}
if (onlyZero(s))
{
return "0";
}
sort(s.begin(), s.end(), greater<char>());
return s;
}
view raw .cpp hosted with ❤ by GitHub

 

개발환경: Programmers IDE

 

지적, 조언, 질문 환영합니다! 질문 남겨주세요~

반응형
반응형