본문 바로가기

공부/알고리즘 문제풀이

[BOJ] 2789. 유학 금지

반응형

문제 링크


어떻게 풀까?


주어진 배열에서 C, A, M, B, R, I, D, G, E글자가 아니라면 결과를 출력하기 위한 캐릭터형 배열에 따로 보관해주면 됩니다!


예를 들어보겠습니다!


LOVE가 입력으로 들어오면 어떻게 해야할까요!?


L은 해당 글자와 상관없기 때문에 res[0]에 넣습니다!

O 도 마찬가지이기 때문에 res[1]에 넣습니다!

V도 마찬가지이기 때문에 res[2]에 넣습니다!

E는 검열되는 글자이기 때문에 버립니다.


그럼 결과는 "LOV"가 됩니다.


코드


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
#pragma once
#include<iostream>
#include<cstring>
 
using namespace std;
 
char del[10= "CAMBRIDGE";
char str[101];
char res[101];
int rlen;
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    cin >> str;
    
    int len = strlen(str);
 
    for (int i = 0; i < len; i++) {
        bool deleted = false;
        for (int j = 0; j < 10; j++) {
            if (str[i] == del[j]) {
                deleted = true;
                break;
            }
        }
 
        if (deleted) continue;
        
        res[rlen++= str[i];
    }
    
    res[rlen] = 0;
    cout << res;
    return 0;
}
cs


시간 복잡도


시간복잡도는 문자열의 길이에만 시간이 달라지기 때문에 O(N) 입니다.



반응형