본문 바로가기

코딩 테스트/프로그래머스 코딩테스트

둘만의 암호

https://school.programmers.co.kr/learn/courses/30/lessons/155652

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

#include <bits/stdc++.h>

using namespace std;

string solution(string s, string skip, int index) {
    string answer = "";
    
    for(int i=0; i<s.size(); i++){
        for(int j=0; j<index; j++){
            // Z, z 예외 처리
            if(s[i] == 'z' || s[i] == 'Z'){
                s[i] -= 26;
            }            
            
            s[i] += 1;
            
            // 해당 문자가 문자열에 포함되어 있는지 확인하는 방법
            if(skip.find(s[i]) != std::string::npos){
                j--;
            }
        }
    }
    
    answer = s;
    
    cout << "answer = " << answer << endl;
    
    return answer;
}

 

꿀팁!

1. z에서 a로 그리고 Z에서 A로 변환하려면 26을 빼주면 된다. (원리는 아스키 코드 참조)

2. string 안에 문자 c가 있는지 없는지 판별하고 싶으면 string.find(c) != std:string:npos 을 사용하면 된다.

 

여기서 npos란?

static const size_type npos = -1;

 

'코딩 테스트 > 프로그래머스 코딩테스트' 카테고리의 다른 글

과일 장수  (0) 2024.05.19
달리기 경주  (0) 2024.05.18
카드 뭉치  (0) 2024.05.18
문자열을 정수로 바꾸기  (0) 2024.05.18
문자열 내 p와 y의 개수  (0) 2024.05.18