-
반응형
안녕하세요, 하루플 입니다.
프로그래머스로 신규 아이디 추천 문제를 풀어보았는데요, 간단한 문제임에도 조금 헷갈릴 수 있는 부분이 있었습니다.
먼저 1단계 소문자 치환입니다.
저는 사실 A = 65, a = 97 아스키코드를 활용해서 for문과 if문을 사용해 소문자로 치환하려 했는데요,
toLowerCase() 라는 아주 간단한 방법이 있었습니다..ㅎㅎ
2단계는 소문자, 숫자, -, _, . 제외한 모든 문자를 제거하는 코드를 작성합니다.
String 형을 한 문자식 읽기 위해 charAt을 사용하였고 for문으로 한 문자식 인덱스 읽는게 가장 간편했습니다.
3단계는 ... 이렇게 점이 여러개인 경우 . 점 하나로 치환해주는 겁니다.
전체 점의 개수를 세고 점 값을 dot에 저장합니다. 이후, replace를 통해 "." 점 하나로 치환해주었습니다.
4단계는 . 점이 처음이나 끝에 있을 때 제거해야합니다.
startsWith와 endsWith를 사용해 문자 처음과 마지막을 읽고, subString으로 원하는 만큼 문자를 잘라줍니다.
점이 처음 있는 경우 자를때는 맨 첫 글자인 0번째 인덱스를 자르면 되니 (1, id.length()); 하면되고
점이 마지막에 있는 경우 자를 때는 (0, id.length()-1) 을 해주어 마지막 글자를 잘라줍니다.
5단계는 빈 문자열이면 "a"를 대입합니다.
저는 처음에 NULL을 하면 될까 하였는데, length() == 0 이 훨씬 간단하겠군요.
다음 6단계 입니다.
길이 16자 이상이면 첫 15문자 제외 나머지 글자를 제거합니다.
제거 후 .이 끝에 있다면 다시 .점을 제거합니다.
이 문제 중 5, 6단계가 가장 쉬운 것 같습니다.
마지막 7단계 입니다.
id가 2자 이하면 마지막 문자를 길이가 3이 될 때까지 복사하여 늘려줍니다.
last에 마지막 문자 값을 저장해두고
length 값에 따라 last를 이어주면 끝입니다!
아래는 참고한 블로그 입니다.
https://minhamina.tistory.com/121
반응형'개발 > 코딩테스트' 카테고리의 다른 글
[백준/JAVA] 4344번 평균은 넘겠지 문제 풀이 (0) 2021.10.01 [JAVA/백준] 10871번 X보다 작은 수 문제 풀이 (0) 2021.10.01 [백준/10869번] 사칙연산 (0) 2021.08.26 [JAVA/백준] 1002번 문제 해설 및 답안 (0) 2021.07.28 [JAVA/백준] 1000번 문제 해설 및 답안 (0) 2021.07.27 댓글