코딩굼벵이
구르는 중
코딩굼벵이
  • 분류 전체보기 (115)
    • [C_C++]이론 공부 (17)
      • 알고리즘 (11)
      • 이론+STL (6)
    • [C_C++]코딩테스트 연습 (45)
      • [프로그래머스] level 1 (26)
      • [프로그래머스] level 2 (5)
      • [백준] 일반 문제 (12)
      • 기타 (2)
    • Solana (28)
      • Documentation (9)
      • Validator - 공부 (10)
      • Validator - 실행 (devnet & te.. (6)
      • 그 외 (3)
    • React (4)
    • Linux (2)
    • Javascript (2)
    • 블록체인 기반 핀테크 및 응용 SW 개발 (8)
      • React (1)
      • Javascript (3)
      • Solidity (3)
      • 프로젝트 (1)
    • 기타 (9)

블로그 메뉴

  • 🌟 깃허브
  • 🌿 Portfolio(2021)
  • 홈
  • 태그
  • 방명록

티스토리

최근 글

태그

  • grafana
  • 솔라나
  • Immer #ContextAPI
  • 밸리데이터
  • 모니터링
  • Hooks #React

인기 글

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
코딩굼벵이

구르는 중

[C++] 프로그래머스 - 신규 아이디 추천
[C_C++]코딩테스트 연습/[프로그래머스] level 1

[C++] 프로그래머스 - 신규 아이디 추천

2021. 7. 13. 18:38
728x90

 

내 풀이

 

ㅠㅠ for문 돌릴 때 증감자 없애고 안에서 쓸 수 있는걸 몰라서 엄청 삽질했다...

#include <string>
#include <vector>

using namespace std;

string solution(string new_id) {
	//1단계 대문자 -> 소문자
	for (int i = 0; i < new_id.size(); i++) {
		if (new_id[i] >= 'A' && new_id[i] <= 'Z')
			new_id[i] = tolower(new_id[i]);
	}
	//2단계 소문자, 숫자, -, _, . 제외 제거
	for (int i = 0; i < new_id.size(); ) {
		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] == '.') {
			i++;
			continue;
		}
		new_id.erase(i,1);
	}
	//3단계 ..이 연속 두개면 . 하나로 만들기
	for (int i = 1; i < new_id.size(); ) {
		if (new_id[i - 1] == '.' && new_id[i] == '.') new_id.erase(i, 1);
		else i++;
	}
	//4단계 .이 처음이나 끝에 있으면 제거
	if (new_id[0] == '.') new_id.erase(0, 1);
	if (new_id.back() == '.') new_id.erase(new_id.size()-1, 1);
	//5단계 new_id가 빈 문자열이면 'a' 대입
	if (new_id.size() == 0) new_id.push_back('a');
	//6단계 길이 16자 이상이면 15개 뒤에거 제거
	if (new_id.size() >= 16) new_id.erase(15, new_id.size() - 15);
	if (new_id.back() == '.') new_id.erase(new_id.size() - 1, 1);
	//7단계 길이가 2자 이하면 마지막 문자를 new_id 길이 3 될때까지 반복
	if (new_id.size() == 1) {
		//new_id.back();
		new_id.push_back(new_id.back());
		new_id.push_back(new_id.back());
	}
	if (new_id.size() == 2) new_id.push_back(new_id.back());
    
    return new_id;
}

 

 

 

'[C_C++]코딩테스트 연습 > [프로그래머스] level 1' 카테고리의 다른 글

[C++] 프로그래머스 - 예산  (0) 2021.07.13
[C++] 프로그래머스 - 소수 만들기  (0) 2021.07.13
[C++] 프로그래머스 - 크레인 인형뽑기  (0) 2021.07.02
[C++] 프로그래머스 - 2016년  (0) 2021.07.02
[C++] 프로그래머스 - 모의고사  (0) 2021.07.02
    '[C_C++]코딩테스트 연습/[프로그래머스] level 1' 카테고리의 다른 글
    • [C++] 프로그래머스 - 예산
    • [C++] 프로그래머스 - 소수 만들기
    • [C++] 프로그래머스 - 크레인 인형뽑기
    • [C++] 프로그래머스 - 2016년
    코딩굼벵이
    코딩굼벵이
    구르는 재주 연마 중

    티스토리툴바