문제 링크입니다: 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를 내림차순 정렬한 뒤 반환합니다.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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; | |
} |

개발환경: Programmers IDE
지적, 조언, 질문 환영합니다! 질문 남겨주세요~
반응형
반응형
'알고리즘 > programmers' 카테고리의 다른 글
[Programmers] 할인 행사 (0) | 2022.12.03 |
---|---|
[Programmers] 숫자 타자 대회 (2) | 2022.11.20 |
[Programmers] 파괴되지 않은 건물 (1) | 2022.09.27 |
[Programmers] 코딩 테스트 공부 (0) | 2022.08.26 |
[Programmers] 두 큐 합 같게 만들기 (0) | 2022.08.24 |