알고리즘/프로그래머스 1단계
프로그래머스 - A로 B 만들기 - C++
게임만드는학생
2023. 8. 13. 13:22
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 문에서 비교하면 된다.