[boj] cpp find 함수

이미리·2023년 2월 7일
0

boj_Algorithm

목록 보기
14/25

백준 14584 암호 해독 문제이다.
로직을 생각해내는데는 시간이 오래 걸리지 않았다.
모두 대조해보고 부분 문자열이 존재하는가?로 판별하면 됐는데..
왜인지 계속 틀렸다고 나왔다. 로직은 완벽한것같은데?
알고보니 내가 직접 만든 substring 판별 함수가 문제였고

cpp find 함수를 찾아 조건문을 고쳐주니 바로 맞을 수 있었다.

find 함수 사용법

찾을 문자열.find(찾고자 하는 문자열) != string::npos

여기서 string::npos는 찾는 문자열이 없을 경우 반환되는 값이다.
만약 substring이 존재한다면 인덱스의 첫번째값을 반환해준다.

코테에서 만약 이런일이 있었다고 생각하면 끔찍하다.. stl의 사용을 익혀야겠다.

#include <iostream>
using namespace std;
string arr[100];
int n;

string decode(string s, int num) {
    string result = "";
    for (int i = 0; i < s.length(); i++) {
        if (s[i] + num >= 'z') {
            result += (char)(s[i] + num - 'z' + 'a');
        } else {
            result += s[i] + num + 1;
        }
    }

    return result;
}

int main() {
    string s;
    cin >> s;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    for (int i = 0; i <= 'z' - 'a'; i++){
        string decoded = decode(s, i);
        for (int j = 0; j < n; j++) {
            if (decoded.find(arr[j]) != string::npos) {
                cout << decoded;
                return 0;
            }
        }
    }
}

0개의 댓글

관련 채용 정보