본문 바로가기

BAEKJOON/문자열

백준 2789번 [유학 금지](C++) -yes6686- 티스토리

728x90
SMALL

백준 문제 풀이: 2789 (유학 금지)


문제 링크: https://www.acmicpc.net/problem/2789

문제 설명:

입력된 문자열에서 특정 알파벳들을 제거해야 합니다. 제거해야 할 알파벳은 **"CAMBRIDGE"**에 포함된 문자들입니다. 남은 문자들을 순서대로 출력합니다.


문제 해결 코드


#include <iostream>
using namespace std;

int main() {
    string s;
    cin >> s;

    // CAMBRIDGE에 포함된 문자는 출력하지 않음
    for (int i = 0; i < s.size(); i++) {
        if (s[i] == 'C' || s[i] == 'A' || s[i] == 'M' || s[i] == 'B' || s[i] == 'E'
            || s[i] == 'R' || s[i] == 'I' || s[i] == 'D' || s[i] == 'G') {
            continue; // 해당 문자 건너뜀
        }
        cout << s[i]; // CAMBRIDGE에 포함되지 않은 문자만 출력
    }
    return 0;
}

코드 설명

코드의 주요 로직과 사용된 알고리즘 설명:

  • 문자열 순회: 입력받은 문자열 s의 각 문자를 순회합니다.
  • CAMBRIDGE 문자 체크: - 문자가 **C, A, M, B, R, I, D, G, E** 중 하나인지 확인합니다. - 해당 문자가 포함되면 출력하지 않고 **continue**를 사용하여 건너뜁니다.
  • 출력: CAMBRIDGE에 포함되지 않은 문자만 차례대로 출력합니다.

시간 복잡도 분석

  • 문자열의 길이를 n이라 하면, 문자열을 한 번 순회하므로 시간 복잡도는 **O(n)**입니다.
  • 문자 확인 조건이 상수 시간에 수행되므로 매우 효율적입니다.

결과

주어진 문자열에서 "CAMBRIDGE"에 포함된 문자들을 제거한 후 출력합니다.

  • 입력 예시:
    CAMBRIDGE
  • 출력 예시:
    (모두 제거되어 출력 없음)
  • 입력 예시:
    HELLO
  • 출력 예시:
    HLL

다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!

728x90
LIST