Algorithm
[Algorithm] 아이디 생성시 규칙에 따른 변경 후 생성 알고리즘
dev_Step
2022. 5. 23. 16:42
문제의 출처는 프로그래머스 이고,
문제는 회원가입시 아이디를 7단계의 규칙에 맞게 변형시켜주는 알고리즘이다.
1. 내가 짠 코드를 보자면 일단 정규표현식을 사용하지 않아서. 코드가 지저분하나 부분이 많이 있었다.
문제를 풀면서 Debug를 사용하여 변수의 변화되는 모습을 직접 보면서 어떻게 변경되고 어느 부분에서 실수가 발생 했는지 확인할 수 있었다.
해당 내용을 정규 표현식으로 표현할 경우 코드가 많이 짧아지고 간결해진다.
기호 | 설명 | ||
[] | 한 개의 문자 | [abc] | a,b,c중 하나의 문자 |
[^abc] | a,b,c 이외 하나의 문자 | ||
[a-zA-Z] | a~z, A~Z 중 하나 | ||
? | 없음 또는 한개 | ||
* | 없음 또는 한개 이상 | ||
+ | 한개 이상 | ||
{n} | 정확히 n개 | ||
{n,} | 최소한 n개 | ||
{n,m} | n개부터 m개 까지 |
^ | 문자열의 시작 |
$ | 문자열의 끝(종료) |
. | 임의의 한문자 |
* | 앞의 문자가 없을수도, 많을수도 |
[] | 문자의 범위를 나타내며, 두 문자사이에 -기호로 범위를 나타냄 ex)a-z, 0-9 [] 내의 ^ 기호는 부정을 나타낸다 |
{} | 횟수 또는 범위 |
() | 소괄호 안의 문자를 하나의 문자로 인식 |
| | 패턴 안에서 or 연산을 수행 |
길었던 코드가 정규표현식을 사용함으로써 엄청 짧고 간결해짐을 확인할수 있다.
정규표현식 짱짱맨
자주 사용하는 정규 표현식
^[0-9]*$==\\d | 숫자 |
^[a-zA-Z]*$ | 알파벳 |
^[가-힣]*$ | 한글 |
^[a-zA-Z0-9] | 알파벳이나 숫자 |
^[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-z]+$ | 이메일 |
추가적으로
Pattern 클래스와 Matcher 클래스를 한번 봐도 좋을것 같다.