첫번째 라인에 오는 문자열과 두번째 오는 문자열에서 같은 자리에 있는 철자가 모음은 모음끼리, 자음은 자음끼리 연결되어야 한단다.
즉 첫번째가 abc면 두번째 문자열은 첫째자리엔 모음이, 나머지 두번째와 세번째 자리에는 자음이 와야되는 것이다. 조건은 각 라인의 문자열 길이는 1~1000. 그렇다면 일단 길이가 1000인 배열 2개를 만들어보자. null 들어가는 것까지 생각해서 1001로 지정하자.
char Buffer1[1001], Buffer2[1001];
그리고 우리는 이 버퍼에 뭔진 모르겠지만 철자를 써넣을 것이다. scanf로 받도록 하자.
scanf("%s", Buffer1);
scanf("%s", Buffer2);
여기서 "s"가 "t"로 완전히 바뀌어야하므로 길이는 같아야 할 것이다. 따라서 길이가 다르다면 No를 출력해야할 것이다.
//문자열 길이가 다르다면 No 출력
if(strlen(Buffer1) != strlen(Buffer2)){
printf("No");
break;
}
그 후 두 문자열의 길이를 체크해주고, 모음 - 자음 관계를 체크해주면 될 것이다. while문을 이용해서 체크해주도록 만들었다. while문으로 버퍼에 들어있는 모든 문자를 읽을 때까지 돌면서 모음 - 모음 관계인지, 자음 - 자음 관계인지 체크하면서 틀린게 없으면 Yes를, 있었으면 No를 출력하게 해주면 된다.
소스코드
//
// SuperheroTransformation.c
// CodeForce
//
// Created by 신기열 on 2019. 2. 18..
// Copyright © 2019년 신기열. All rights reserved.
//
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
int main(int argc, const char * argv[]) {
int div, result1, result2 = 0;
scanf("%d\n", &div);
char String[1000000];
int Buffer[div];
int i = 0, num;
scanf("%[^\n]s", String);
char *c = strtok(String, " ");
while(c != NULL){
num = atoi(c);
Buffer[i] = num;
c = strtok(NULL, " ");
i++;
}
for(int p = 0; p < div-1; p++){
for(int q = 1; q < div; q++){
if(Buffer[q-1] < Buffer[q]){
swap(&Buffer[q-1], &Buffer[q]);
}
}
}
result1 = Buffer[0];
for(int r = 0; r < div-1; r++){
if(result1 % Buffer[r+1] != 0){
result2 = Buffer[r+1];
break;
}
else if(Buffer[0] % Buffer[r+1] == 0){
int d = div;
int temp = 0;
while(d > 0){
if(Buffer[d-1] == Buffer[d-2]){
temp = Buffer[d-1];
d = d - 2;
}
else{
d = d - 1;
}
}
result2 = temp;
}
}
printf("%d %d", result1, result2);
return 0;
}
소스코드 : https://github.com/betterafter/CodeForce/blob/master/SuperheroTransformation.c
댓글
댓글 쓰기