티스토리 뷰

반응형


#. Problem

* The copyright in this matter is in Inflearn


#. Resolution Process

  1. Read and understand problem

  2. Redefine the problem + abstract

  3. Create solution plan (select Algorithm, Data structure)

  4. Prove the plan (check performance time and usage memory)

  5. Carry out the plan

  6. Look back on the plan and find a way to improve it


#. Solve

  1. 간단하게 각 문자열을 탐색하면서 ASCII index 로 저장된 배열에 사용된 알파벳의 개수를 cnt 해준 후 비교해보자.


#. Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <cstdio>
 
int alpaA[123], alpaB[123];
 
int main(void)
{
    freopen("input.txt""rt", stdin);
 
    int i;
    char a[100], b[100];
 
    scanf("%s %s"&a, &b);
 
    for (i = 0; a[i] != '\0'; i++)
        alpaA[a[i]]++;
 
    for (i = 0; b[i] != '\0'; i++)
        alpaB[b[i]]++;
 
    bool isSame = true;
 
    for (i = 65; i < 123; i++)
    {
        if (alpaA[i] != alpaB[i])
        {
            isSame = false;
            break;
        }
    }
 
    if (isSame)
        printf("YES\n");
    else
        printf("NO\n");
 
    return 0;
}
cs


#. Other code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<stdio.h>
#include<algorithm>
 
int a[60], b[60];
 
int main(){
    freopen("input.txt""rt", stdin);
    int n, i;
    char str[100];
 
    scanf("%s"&str);
 
    for(i=0; str[i]!='\0'; i++){
        if(str[i]>=65 && str[i]<=90)
            a[str[i]-64]++;
        else 
            a[str[i]-70]++;
    }
    
    scanf("%s"&str);
 
    for(i=0; str[i]!='\0'; i++){
        if(str[i]>=65 && str[i]<=90)
            b[str[i]-64]++;
        else 
            b[str[i]-70]++;
    }
    
    for(i=1; i<=52; i++){
        if(a[i]!=b[i]){
            printf("NO\n");
 
            exit(0);
        }
    }
 
    printf("YES\n");    
 
    return 0;
}
cs

1. char 배열을 한 개로 재활용할 수 있었는데, 나는 char 배열 두 개를 만들어서 메모리 손해(?미세하지만..)를 보았다.

2. 여기서는 ASCII index를 저장하는 배열을 작게 사용하였지만 그만큼 대문자일 경우와 소문자일 경우를 판별하여 연산량이 늘었(?)다.

   나는 그냥 있는 그대로 index로 받아들였다..ㅋㅋ

3. line 33 에서 exit(0) 사용대신 return 0; 을 사용해도 좋을 것 같다.

4. 속도나 메모리를 측정하여 비교해보고 싶지만 대용량의 데이터셋이 없어서 아쉽다..


#. Result

  - Input --------------------------------------------------------

AbaAeCe

baeeACA

------------------------------------------------------------------


  - Output --------------------------------------------------------

YES

------------------------------------------------------------------



반응형
댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday