https://school.programmers.co.kr/learn/courses/30/lessons/120886
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(string before, string after) {
int answer = 0;
int arr[27] = { 0, };
int arr2[27] = { 0, };
for (int i = 0; i < after.length(); i++)
{
arr[before[i] - 97]++;
arr2[after[i] - 97]++;
}
for (int i = 0; i < 27; i++)
{
if (arr[i] != arr2[i])return 0;
}
return 1;
}
설명
before 에 있는 알파벳들을 어떤식으로든 조합하여 after를 만들 수 있느냐를 판단해야 한다.
따라서 before 의 각각의 알파벳 개수와 after 의 알파벳 개수를 비교하여 전부 같으면 1 아니면 0 을 리턴한다.
첫 for 문에서 각각의 알파벳 개수를 비교한다.
arr[before[i]-97]++;
arr2[after[i]-97]++;
이 코드는 전부 소문자인 알파벳들을 인덱스화 시키는 것이다.
before[i] 가 a 였다면 아스키코드로 97 이기 때문에 97을 빼면 0 이 된다. 따라서 arr[0] 을 1 증가시켜 알파벳 개수를 파악한다.
그리고 두 번째 for 문에서 비교하면 된다.
'알고리즘 > 프로그래머스 1단계' 카테고리의 다른 글
프로그래머스 - 숨어있는 숫자의 덧셈(2) (0) | 2023.08.13 |
---|---|
프로그래머스 - 가까운 수 - C++ (0) | 2023.08.13 |
프로그래머스 - 합성수 찾기 - C++ (0) | 2023.08.12 |
프로그래머스 - 약수 구하기 - C++ (0) | 2023.08.11 |
프로그래머스 - 암호 해독 - C++ (0) | 2023.08.11 |