Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 걷는건귀찮아
- 3273
- MySQL
- 우분투
- 알고리즘
- SWEA
- 원형
- 수 만들기
- 윈도우
- 유니티
- 알고리즘 목차
- 18249
- 탄막 이동
- mysqld.sock
- 단어 수학
- 마우스 따라다니기
- c#
- 토글 그룹
- 그리디알고리즘
- AI Hub
- 3344
- 백준
- 문자열 압축
- 영상 프레임 추출
- 강의실2
- 회의실 배정
- 탄막
- 탄막 스킬 범위
- 자료구조 목차
- 2020 KAKAO BLIND RECRUITMENT
Archives
- Today
- Total
와이유스토리
[문자열] 프로그래머스 신규 아이디 추천 C++, Python 본문
※ 문제
https://programmers.co.kr/learn/courses/30/lessons/72410
3,4,5,11,15,22 TC (3단계에서 오류, "z_.."=>"z_..") 해결
#include <string>
#include <vector>
using namespace std;
string solution(string new_id) {
string answer = "";
//1단계
for (int i = 0; i < new_id.length(); i++)
if ((new_id[i] >= 'A') && (new_id[i] <= 'Z')) new_id[i] += 32; // 대문자+32=소문자
}
//2단계
for (int i = 0; i < new_id.length(); i++) {
if (((new_id[i] >= 'a') && (new_id[i] <= 'z')) || ((new_id[i] >= '0') && (new_id[i] <= '9')) || (new_id[i] == '-') || (new_id[i] == '_') || (new_id[i] == '.'))
answer += new_id[i];
}
//3단계
for (int i = 0; i < answer.length(); i++) {
if (answer[i] == '.') {
for (int j = i; j <answer.length(); j++) {
if (answer[j] == '.') {
if (j==answer.length()-1) { // 조심
answer.erase(i, j);
break;
}
continue;
}
else {
answer.erase(i, j-i-1);
break;
}
}
}
}
//4단계
if ((answer.length()>0)&&(answer[answer.length() - 1] == '.')) { // 조심
//answer.erase(answer.length()-1);
if (answer.length() == 1) answer.erase(0,1);
else { answer = answer.substr(0, answer.length() - 2);}
}
if (answer[0] == '.') answer.erase(0,1);
//5단계
if (answer.length() == 0)answer += 'a'; // answer[i]='a'(X)
//6단계
if (answer.length() >= 16) {
answer = answer.substr(0,15);
if (answer[14] == '.') answer.erase(14);
}
//7단계
if (answer.length() <= 2) {
for(int i=answer.length(); i<3; i++) {
answer += answer[answer.length() - 1];
}
}
return answer;
}
※ Python 정규식으로 풀어보기(다른 코드 참고)
import re
def solution(new_id):
answer = ''
answer = new_id.lower()
answer = re.sub('[^a-z0-9-_\.]+', "", answer) # + 조심
answer = re.sub('\.\.+',".",answer) # [] 없음
answer = answer.strip('.') # 앞, 뒤 문자 삭제
if len(answer) == 0: answer = 'a'
answer = answer[:15].strip('.')
answer += answer[-1] * (3-len(answer))
return answer
'코딩테스트 > 문자열' 카테고리의 다른 글
[문자열] 프로그래머스 신고 결과 받기 Python (0) | 2022.02.02 |
---|---|
[문자열] 프로그래머스 숫자 문자열과 영단어 Python (0) | 2021.12.29 |
[문자열 처리] (3) 문자열 검색 - 프로그래머스 2020 KAKAO BLIND RECRUITMENT > 가사 검색(트라이 알고리즘) (0) | 2021.05.30 |
[문자열 처리] (2) 프로그래머스 문자열 압축 - 2020 KAKAO BLIND RECRUITMENT> 문자열 압축 (0) | 2021.05.30 |
[문자열 처리] (1) 문자열 정렬 - 프로그래머스 2018 KAKAO BLIND RECRUITMENT > 파일명 정렬 (0) | 2021.05.30 |
Comments