javascript에 익숙해지기 위해 관련 언어를 서칭하며 문제를 해결해 보았습니다. 
관련 문제는 2021 KAKAO BLIND RECRUITMENT 신규아이디추천 입니다. 

정규식을 알아야 풀 수 있는 문제라고 접근했는데 서치해보니 문자열의 각 문자를 참조할 수 있는 방법에 대해 공부할 수 있었습니다.
MDN Web Docs에서 관련 내용을 참고해보면 ThecharCodeAt()method returns an integer between0and65535representing the UTF-16 code unit at the given index. 로 소개되어있습니다.

즉, Unicode로 반환되기 때문에 우리가 은히 알고있는 아스키 코드표를 참고해서 비교해봄으로써 문제에서 요구한 사항을 지켜낼 수 있습니다.

Unicode를 반환하게 됩니다.

 

Code

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
function solution(new_id) {
    var answer = '';
    //step1
    new_id = new_id.toLowerCase()
    var new_id_g = ""
   
    //step2
    for(let i=0; i<new_id.length; i++){
        let check = new_id.charCodeAt(i)
        if((check== 45|| check==95 || check==46|| (check>=97 && check<=122|| (check>=48 && check<=57))
                new_id_g+=new_id[i]
    }
    console.log(new_id_g)
    
    var new_id_gg = ""
    
    //step3
    for(let i=0; i<new_id_g.length-1; i++){
        if(new_id_g[i]=='.' && new_id_g[i]==new_id_g[i+1])
            continue
        else
            new_id_gg+=new_id_g[i]
    }
    new_id_gg+=new_id_g[new_id_g.length-1]
    
    
    //step4
    if(new_id_gg[0]=='.' && new_id_gg[new_id_gg.length-1]=='.')
        new_id_gg=new_id_gg.substr(1,new_id_gg.length-1)
    if(new_id_gg[0]=='.' && new_id_gg[new_id_gg.length-1]!='.')
        new_id_gg=new_id_gg.substr(1,new_id_gg.length)
    if(new_id_gg[0]!='.' && new_id_gg[new_id_gg.length-1]=='.')
        new_id_gg=new_id_gg.substr(0,new_id_gg.length-1)
    
    //step5
    if(new_id_gg.length == 0)
        new_id_gg='a'
    
    //step6
    if(new_id_gg.length>=16){
        new_id_gg=new_id_gg.substr(0,15)
        if(new_id_gg[new_id_gg.length-1]=='.')
            new_id_gg=new_id_gg.substr(0,14)
    }
   
    //step7
    while(new_id_gg.length<=2){
        new_id_gg+=new_id_gg[new_id_gg.length-1]        
    }
    
    
    return new_id_gg;
}
cs

 

 

'알고리즘' 카테고리의 다른 글

프로그래머스 2개 이하로 다른 비트  (0) 2021.05.20
완주하지못한선수 / k번째 수  (0) 2021.05.08
BOJ 1619, 최소비용구하기  (0) 2020.11.08
숨바꼭질4  (0) 2020.11.07
특정거리의 도시찾기  (0) 2020.11.07