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

2022. 9. 3. 14:00·🍞 Algorithm/Programmers
https://programmers.co.kr/learn/courses/30/lessons/72410 
 

프로그래머스

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

programmers.co.kr

 

풀이과정

문제가 길어 당황할 수 있지만, 단계별로 해나가면 풀 수 있는 문제이다.  
단계를 보면 문자를 제거하라는 조건이 있는데 여기서 공백으로 치환해줬다.  
공백으로 치환해줬으면 erase와 remove 함수를 써서 지워줘야 한다.

 

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

string solution(string new_id) {
    string answer = "";

    // 1단계
    for(int i = 0; i < new_id.size(); i++){
        if('A' <= new_id[i] && new_id[i] <= 'Z') new_id[i] += 32;
    }
    // 2단계
    for(int i = 0; i < new_id.size(); i++){
        if('a' <= new_id[i] && new_id[i] <= 'z' || '0' <= new_id[i] && new_id[i] <= '9')
            continue;
        if(new_id[i] == '-' || new_id[i] == '_' || new_id[i] == '.')
            continue;
        new_id[i] = ' ';
    }
    new_id.erase(remove(new_id.begin(), new_id.end(), ' '), new_id.end());

    // 3단계
    for(int i = 0; i < new_id.size() - 1; i++){
        if(new_id[i] == '.'){
            while(new_id[i + 1] == '.'){
                new_id[i + 1] = ' ';
                i++;
            }
        }
    }
    new_id.erase(remove(new_id.begin(), new_id.end(), ' '), new_id.end());

    // 4단계
    if(new_id[0] == '.') new_id[0] = ' ';
    if(new_id[new_id.size() - 1] == '.') new_id[new_id.size() - 1] = ' ';
    new_id.erase(remove(new_id.begin(), new_id.end(), ' '), new_id.end());

    // 5단계
    if(new_id.size() == 0) new_id += "a";

    // 6단계
    if(new_id.size() >= 16){
        for(int i = 15; i < new_id.size(); i++){
            new_id[i] = ' ';
        }
        if(new_id[14] == '.') new_id[14] = ' ';
    }
    new_id.erase(remove(new_id.begin(), new_id.end(), ' '), new_id.end());

    // 7단계
    if(new_id.size() <= 2){
        char c = new_id[new_id.size() - 1];
        while(new_id.size() <= 2){
            new_id += c;
        }
    }
    answer = new_id;
    return answer;
}
저작자표시 (새창열림)

'🍞 Algorithm > Programmers' 카테고리의 다른 글

[프로그래머스][Level2] 2 x n 타일링 c++  (0) 2022.10.20
[프로그래머스][Level1] 크레인 인형뽑기 게임 c++  (0) 2022.09.03
[프로그래머스][Level1] 신고 결과 받기 c++  (0) 2022.09.03
[프로그래머스][Level1] 문자열 내 마음대로 정렬하기 c++  (0) 2022.09.03
[프로그래머스][Level1] 2016년 c++  (0) 2022.09.03
'🍞 Algorithm/Programmers' 카테고리의 다른 글
  • [프로그래머스][Level2] 2 x n 타일링 c++
  • [프로그래머스][Level1] 크레인 인형뽑기 게임 c++
  • [프로그래머스][Level1] 신고 결과 받기 c++
  • [프로그래머스][Level1] 문자열 내 마음대로 정렬하기 c++
박빵이
박빵이
2025년에도 갓생살기
  • 박빵이
    기억보다 기록
    박빵이
  • 전체
    오늘
    어제
    • 분류 전체보기 (337)
      • 🍞 FrontEnd (97)
        • HTML+CSS (4)
        • JavaScript (17)
        • TypeScript (4)
        • React (52)
        • Next.js (2)
        • Android (15)
      • 🍞 BackEnd (24)
        • Java (15)
        • Node.js (6)
        • Spring (1)
      • 🍞 Cloud & Infra (0)
        • AWS SAA (0)
        • Microsoft Azure (0)
      • 🍞 Algorithm (147)
        • C++ (4)
        • Baekjoon (41)
        • Programmers (97)
      • 🍞 Computer Science (18)
        • 운영체제 (1)
        • 데이터 통신 (6)
        • 네트워크 (6)
        • 데이터베이스 (1)
      • 🍞 대외활동 & 부트캠프 (42)
        • 삼성 청년 SW 아카데미 (1)
        • LG유플러스 유레카 (0)
        • 한국대학생IT경영학회 (1)
        • IT연합동아리 UMC (17)
        • 길벗 블로깅 멘토 (18)
        • IT연합동아리 피로그래밍 (3)
        • 개발 컨퍼런스 (2)
  • 블로그 메뉴

    • Admin
  • 링크

    • GitHub
  • 인기 글

  • 태그

    프로그래머스
    위상정렬
    level2
    umc
    알고리즘
    코딩자율학습
    Java
    길벗 블로깅 멘토링
    Android
    react
    level1
    코틀린
    길벗 블로깅 멘토
    유니온파인드
    C++
    JavaScript
    백준
    안드로이드
    Front
    map
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
박빵이
[프로그래머스][Level1] 신규 아이디 추천 c++
상단으로

티스토리툴바