[프로그래머스] 크기가 작은 부분 문자열, 시저 암호
2024. 5. 2. 14:39ㆍ코딩테스트
크기가 작은 부분 문자열
https://school.programmers.co.kr/learn/courses/30/lessons/147355
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.
제한사항
1 ≤ p의 길이 ≤ 18p의 길이 ≤ t의 길이 ≤ 10,000t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않습니다.
문제를 푸는 방식을 잘 몰라 오래 걸린 문제이다. 해당 값들을 배열로 만들어 각 자리수를 비교하면서 해보았는데 메모리 부하가 심해 더 생가해보다가 스트링을 자르고 형변환으로 long long으로 바꾸면 더 쉽지 않을까 생각해보다가 해봤더니 코드 길이도 간결해지고 쉽게 풀 수 있었다.
#include <string>
#include <vector>
using namespace std;
int solution(string t, string p) {
int answer = 0;
for(int i=0; i <=t.size()-p.size();i++)
{
long long tValue = stoll(t.substr(i,p.size()));
long long pValue = stoll(p);
if(tValue<=pValue)
{
answer++;
}
}
return answer;
}
시저 암호
https://school.programmers.co.kr/learn/courses/30/lessons/12926
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.
제한 조건
공백은 아무리 밀어도 공백입니다.s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.s의 길이는 8000이하입니다.n은 1 이상, 25이하인 자연수입니다.
아스키 코드를 이용해 값을 이용해 n의 값을 더해주면 해결될 것 같다. 다만 z와 Z일때는 다시 a나 A로 되돌아가야 하기 때문에 그 값 만큼 빼주는 작업을 추가한다.
#include <string>
#include <cstring>
#include <vector>
using namespace std;
string solution(string s, int n) {
string answer = "";
char keys[s.size()];
strcpy(keys,s.c_str());
for(int i=0; i <s.size();i++)
{
if(keys[i]==' ')
{
answer+=" ";
}
else
{
int count = n;
int alphabat =keys[i];
while(count>0)
{
if(alphabat==90||alphabat==122)
{
alphabat-= 26;
}
alphabat++;
count--;
}
answer+=alphabat;
}
}
return answer;
}
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 숫자 문자열과 영단어 (0) | 2024.05.22 |
---|---|
[프로그래머스] 최소직사각형, 가장 가까운 같은 글자 (0) | 2024.05.03 |
[프로그래머스] 삼총사 (1) | 2024.05.01 |
[프로그래머스] 이상한 문자 만들기, 예산 (1) | 2024.04.30 |
[프로그래머스] 3진법 뒤집기 (0) | 2024.04.26 |