Notice
Recent Posts
Recent Comments
Link
궤도
[EPPER] 12회 6번 본문
문제
풀이
하나의 문자열을 다른 문자열로 바꾼다고 생각하지 말고, 두 문자열을 모두 제 3의 문자열로 바꿔버린다고 생각하면 쉬워진다. 제 3의 문자열은 바로 알파벳을 사전순으로 정렬한 모습이다.
sort_arr 함수에서 각각의 문자열을 사전순으로 정렬한다. 각각의 문자열에 대문자가 있기도 하니 일단 대문자들을 전부 소문자로 바꿔준다. 아스키 코드를 참고했다. 가공을 끝낸 뒤 삽입 정렬을 했다. 왜 맨날 삽입 정렬만 하냐면 유일하게 외운 정렬 코드가 저거라서...
마지막으로 사전순 정렬한 각 문자열을 서로 비교해주면 끝난다.
소스코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void sort_arr(char* str, int length) {
for (int i = 0; i < length; i++) {
if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] += 32;
}
}
for (int i = 1; i < length; i++) {
char temp = str[i];
int j = i - 1;
while (j >= 0 && str[j] > temp) {
str[j + 1] = str[j];
j--;
}
str[j + 1] = temp;
}
}
int main() {
char source[101];
char dest[101];
scanf("%s %s", &source, &dest);
int s_length = strlen(source);
int d_length = strlen(dest);
sort_arr(source, s_length);
sort_arr(dest, d_length);
if (strcmp(source, dest) == 0) //문자열 일치하는지 확인
printf("Yes\n");
else
printf("No\n");
}
Comments