[์นด์นด์˜ค ๋ธ”๋ผ์ธ๋“œ 2021] ์‹ ๊ทœ์•„์ด๋”” ์ถ”์ฒœ :: string ์‚ฌ์šฉ ๋ฌธ์ œ

์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ

๋‚œ์ด๋„ : โ˜…โ˜†โ˜†โ˜†โ˜†

๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : 30๋ถ„

=> ๋ฐ˜์„ฑ!

๋ฌธ์ œ

์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฌธ์ œ ์„ค๋ช…

์นด์นด์˜ค์— ์ž…์‚ฌํ•œ ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋„ค์˜ค๋Š” ์นด์นด์˜ค๊ณ„์ •๊ฐœ๋ฐœํŒ€์— ๋ฐฐ์น˜๋˜์–ด, ์นด์นด์˜ค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์˜ ์•„์ด๋””๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„ค์˜ค์—๊ฒŒ ์ฃผ์–ด์ง„ ์ฒซ ์—…๋ฌด๋Š” ์ƒˆ๋กœ ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์ด ์นด์นด์˜ค ์•„์ด๋”” ๊ทœ์น™์— ๋งž์ง€ ์•Š๋Š” ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, ์ž…๋ ฅ๋œ ์•„์ด๋””์™€ ์œ ์‚ฌํ•˜๋ฉด์„œ ๊ทœ์น™์— ๋งž๋Š” ์•„์ด๋””๋ฅผ ์ถ”์ฒœํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‹ค์Œ์€ ์นด์นด์˜ค ์•„์ด๋””์˜ ๊ทœ์น™์ž…๋‹ˆ๋‹ค.

  • ์•„์ด๋””์˜ ๊ธธ์ด๋Š” 3์ž ์ด์ƒ 15์ž ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์•„์ด๋””๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ๋นผ๊ธฐ(-), ๋ฐ‘์ค„(_), ๋งˆ์นจํ‘œ(.) ๋ฌธ์ž๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹จ, ๋งˆ์นจํ‘œ(.)๋Š” ์ฒ˜์Œ๊ณผ ๋์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋˜ํ•œ ์—ฐ์†์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋„ค์˜ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 7๋‹จ๊ณ„์˜ ์ˆœ์ฐจ์ ์ธ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ํ†ตํ•ด ์‹ ๊ทœ ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ์•„์ด๋””๊ฐ€ ์นด์นด์˜ค ์•„์ด๋”” ๊ทœ์น™์— ๋งž๋Š” ์ง€ ๊ฒ€์‚ฌํ•˜๊ณ  ๊ทœ์น™์— ๋งž์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ทœ์น™์— ๋งž๋Š” ์ƒˆ๋กœ์šด ์•„์ด๋””๋ฅผ ์ถ”์ฒœํ•ด ์ฃผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์‹ ๊ทœ ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ์•„์ด๋””๊ฐ€ new_id ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด,

1๋‹จ๊ณ„ new_id์˜ ๋ชจ๋“  ๋Œ€๋ฌธ์ž๋ฅผ ๋Œ€์‘๋˜๋Š” ์†Œ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
2๋‹จ๊ณ„ new_id์—์„œ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ๋นผ๊ธฐ(-), ๋ฐ‘์ค„(_), ๋งˆ์นจํ‘œ(.)๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
3๋‹จ๊ณ„ new_id์—์„œ ๋งˆ์นจํ‘œ(.)๊ฐ€ 2๋ฒˆ ์ด์ƒ ์—ฐ์†๋œ ๋ถ€๋ถ„์„ ํ•˜๋‚˜์˜ ๋งˆ์นจํ‘œ(.)๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
4๋‹จ๊ณ„ new_id์—์„œ ๋งˆ์นจํ‘œ(.)๊ฐ€ ์ฒ˜์Œ์ด๋‚˜ ๋์— ์œ„์น˜ํ•œ๋‹ค๋ฉด ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
5๋‹จ๊ณ„ new_id๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, new_id์— "a"๋ฅผ ๋Œ€์ž…ํ•ฉ๋‹ˆ๋‹ค.
6๋‹จ๊ณ„ new_id์˜ ๊ธธ์ด๊ฐ€ 16์ž ์ด์ƒ์ด๋ฉด, new_id์˜ ์ฒซ 15๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋“ค์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
     ๋งŒ์•ฝ ์ œ๊ฑฐ ํ›„ ๋งˆ์นจํ‘œ(.)๊ฐ€ new_id์˜ ๋์— ์œ„์น˜ํ•œ๋‹ค๋ฉด ๋์— ์œ„์น˜ํ•œ ๋งˆ์นจํ‘œ(.) ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
7๋‹จ๊ณ„ new_id์˜ ๊ธธ์ด๊ฐ€ 2์ž ์ดํ•˜๋ผ๋ฉด, new_id์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋ฅผ new_id์˜ ๊ธธ์ด๊ฐ€ 3์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์„œ ๋์— ๋ถ™์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, new_id ๊ฐ’์ด ...!@BaT#*..y.abcdefghijklm ๋ผ๋ฉด, ์œ„ 7๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๊ณ  ๋‚˜๋ฉด new_id๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

1๋‹จ๊ณ„ ๋Œ€๋ฌธ์ž 'B'์™€ 'T'๊ฐ€ ์†Œ๋ฌธ์ž 'b'์™€ 't'๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค.
"...!@BaT#*..y.abcdefghijklm""...!@bat#*..y.abcdefghijklm"

2๋‹จ๊ณ„ '!', '@', '#', '' ๋ฌธ์ž๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
`"...!@bat#
..y.abcdefghijklm""...bat..y.abcdefghijklm"`

3๋‹จ๊ณ„ '...'์™€ '..' ๊ฐ€ '.'๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค.
"...bat..y.abcdefghijklm"".bat.y.abcdefghijklm"

4๋‹จ๊ณ„ ์•„์ด๋””์˜ ์ฒ˜์Œ์— ์œ„์น˜ํ•œ '.'๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
".bat.y.abcdefghijklm""bat.y.abcdefghijklm"

5๋‹จ๊ณ„ ์•„์ด๋””๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋ณ€ํ™”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
"bat.y.abcdefghijklm""bat.y.abcdefghijklm"

6๋‹จ๊ณ„ ์•„์ด๋””์˜ ๊ธธ์ด๊ฐ€ 16์ž ์ด์ƒ์ด๋ฏ€๋กœ, ์ฒ˜์Œ 15์ž๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋“ค์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
"bat.y.abcdefghijklm""bat.y.abcdefghi"

7๋‹จ๊ณ„ ์•„์ด๋””์˜ ๊ธธ์ด๊ฐ€ 2์ž ์ดํ•˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋ณ€ํ™”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
"bat.y.abcdefghi""bat.y.abcdefghi"

๋”ฐ๋ผ์„œ ์‹ ๊ทœ ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ new_id๊ฐ€ ...!@BaT#*..y.abcdefghijklm์ผ ๋•Œ, ๋„ค์˜ค์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ถ”์ฒœํ•˜๋Š” ์ƒˆ๋กœ์šด ์•„์ด๋””๋Š” bat.y.abcdefghi ์ž…๋‹ˆ๋‹ค.


[๋ฌธ์ œ]

์‹ ๊ทœ ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ์•„์ด๋””๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” new_id๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋„ค์˜ค๊ฐ€ ์„ค๊ณ„ํ•œ 7๋‹จ๊ณ„์˜ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„์˜ ์ถ”์ฒœ ์•„์ด๋””๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

[์ œํ•œ์‚ฌํ•ญ]

new_id๋Š” ๊ธธ์ด 1 ์ด์ƒ 1,000 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
new_id๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž, ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ํŠน์ˆ˜๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
new_id์— ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜๋ฌธ์ž๋Š” -_.~!@#$%^&*()=+[{]}:?,<>/ ๋กœ ํ•œ์ •๋ฉ๋‹ˆ๋‹ค.


์ฝ”๋“œ

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

using namespace std;

bool getBool(char a) {
    if((a >= 'a' && a <= 'z') || (a >= '0' && a <= '9') || a =='-' || a == '_' || a == '.')
        return true;
    return false;
}

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

    // 1๋‹จ๊ณ„
    transform(new_id.begin(), new_id.end(), new_id.begin(), ::tolower);
    // 2๋‹จ๊ณ„
    for(int i=0; i<new_id.size();){
        if(!getBool(new_id[i]))
            new_id.erase(i, 1);
        else
            i++;

    }
    // 3๋‹จ๊ณ„
    char pre_char = ' ';
    int index = 0;
    while(index<new_id.size()){
        char now_char = new_id[index];
        if(pre_char == '.' && now_char == '.')
            new_id.erase(index, 1);
        else{
            index++;
            pre_char = now_char;
        }
    }
    // 4๋‹จ๊ณ„
    if(new_id[0]=='.')
        new_id.erase(0,1);
    if(new_id[new_id.size()-1]=='.')
        new_id.erase(new_id.size()-1,1);
    // 5๋‹จ๊ณ„
    if(new_id.size()==0)
        new_id = "a";
    // 6๋‹จ๊ณ„
    if(new_id.size()>15)
        new_id = new_id.substr(0,15);
    if(new_id[new_id.size()-1]=='.')
        new_id.erase(new_id.size()-1,1);
    // 7๋‹จ๊ณ„
    char a = new_id[new_id.size()-1];
    while(new_id.size()<3){
        new_id.append(1, a);
    }

    answer = new_id;
    return answer;
}

์ฑ„์  ๊ฒฐ๊ณผ

์ฃผ์˜ํ•  ๊ฒƒ

์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜ ํ•˜๋‚˜ํ•˜๋‚˜์”ฉ ์™ธ์šฐ์ž

  • transform(str.begin(), str.end(), str2.begin(), ::tolower)
  • str.erase(index, len)
  • str.append(len, char)
๋ฐ˜์‘ํ˜•