[10252] Common Permutation








Problem Link : http://acm.uva.es/p/v102/10252.html








■ Problem
– 첫번째 인풋과 두번째 인풋에 있는 똑같은 문자 알파벳순으로 정렬하기

■ Solution
– 입력 문자를 배열 첨자로 바로 사용. check 배열 두개를 두고 입력에 있는 문자 check[문자-‘a’] 값 증가

■ Critical Input
– 처음 잘 못 이해했는데… 똑같은 문자 여러번 나오면 한번 출력인줄 알았는데… 같은수 만큼출력.
– 아직도 이해안되는게…
– memset ( input1, 0, sizeof ( input1 ) ); memset ( input2, 0, sizeof ( input2 ) );
– 마지막에 초기화 안하면 왜 WA지… gets의 뭔가가 있나…





[ Source Code ]

#include <stdio.h>
#include <string.h>

int main ( void ) {

int check[26], check2[26], loop, input1_len;
int input2_len;
char input1[1001], input2[1001];

while ( gets ( input1 ) ) {

gets ( input2 );

input1_len = strlen ( input1 );
input2_len = strlen ( input2 );

// 변수 초기화
memset ( check, 0, sizeof ( check ) );
memset ( check2, 0, sizeof ( check2 ) );

// 첫번째 인풋에서 있는 문자열 체크
for ( loop = 0 ; loop < input1_len ; loop++ ) {
check[input1[loop]-‘a’] += 1;
}

// 두번째 인풋에서 있는 문자열 체크
for ( loop = 0 ; loop < input2_len ; loop++ ) {
check2[input2[loop]-‘a’] += 1;
}

for ( loop = 0 ; loop < 26 ; loop++ ) {
while ( check[loop] && check2[loop] ) {
printf ( %c, (char) loop + ‘a’ );
check[loop]–;
check2[loop]–;
}
}
printf ( \n );
memset ( input1, 0, sizeof ( input1 ) );
memset ( input2, 0, sizeof ( input2 ) );

}

return 0;

}


댓글 남기기