๐ท๐ผ๋ชจ์ฌ๋ด์ ๊ฐ๋ฐ์์ฒ๐ท๐ผ
[JAVA/์ฝ๋ฉํ ์คํธ] ์ ๊ท ์์ด๋ ์ถ์ฒ (2021 KAKAO BLIND RECRUITMNET) ๋ณธ๋ฌธ
[JAVA/์ฝ๋ฉํ ์คํธ] ์ ๊ท ์์ด๋ ์ถ์ฒ (2021 KAKAO BLIND RECRUITMNET)
์์ผ์ด 2022. 8. 15. 21:10๋ฌธ์
programmers.co.kr/learn/courses/30/lessons/72410
์ฒซ๋ฒ์งธ ์๋
import java.util.*;
class Solution {
public String solution(String new_id) {
String answer = "";
String answerTmp = "";
// 1. new_id์ ๋ชจ๋ ๋๋ฌธ์๋ฅผ ๋์๋๋ ์๋ฌธ์๋ก ์นํํฉ๋๋ค.
new_id = new_id.toLowerCase(Locale.ROOT);
// 2. new_id์์ ์ํ๋ฒณ ์๋ฌธ์, ์ซ์, ๋นผ๊ธฐ(-), ๋ฐ์ค(_), ๋ง์นจํ(.)๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
for(char x : new_id.toCharArray()){
if(Character.isLowerCase(x) || x == '-' || x == '_' || x == '.' || (x >= 48 && x <=57)){
answer += x;
}
}
// 3. new_id์์ ๋ง์นจํ(.)๊ฐ 2๋ฒ ์ด์ ์ฐ์๋ ๋ถ๋ถ์ ํ๋์ ๋ง์นจํ(.)๋ก ์นํํฉ๋๋ค.
for(int i=0; i<answer.length();){
if(answer.charAt(i) == '.'){
if(i+1 < answer.length()){
for(int j=i+1; j<answer.length(); j++){
if(answer.charAt(j) == '.'){
i++;
}else{
answerTmp = answerTmp + ".";
i++;
break;
}
}
}else{
answerTmp = answerTmp + ".";
i++;
}
}else{
answerTmp += answer.charAt(i);
i++;
}
}
// 4. new_id์์ ๋ง์นจํ(.)๊ฐ ์ฒ์์ด๋ ๋์ ์์นํ๋ค๋ฉด ์ ๊ฑฐํฉ๋๋ค.
if(answerTmp.charAt(0) == '.'){
answer = answerTmp.substring(1, answerTmp.length());
}
if(answerTmp.charAt(answerTmp.length()-1) == '.'){
answer = answer.substring(0,answerTmp.length()-1);
}
// 5. new_id๊ฐ ๋น ๋ฌธ์์ด์ด๋ผ๋ฉด, new_id์ "a"๋ฅผ ๋์
ํฉ๋๋ค.
if(answer.isBlank()){
answer = "a";
}
// 6. new_id์ ๊ธธ์ด๊ฐ 16์ ์ด์์ด๋ฉด, new_id์ ์ฒซ 15๊ฐ์ ๋ฌธ์๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ฌธ์๋ค์ ๋ชจ๋ ์ ๊ฑฐํฉ๋๋ค. ๋ง์ฝ ์ ๊ฑฐ ํ ๋ง์นจํ(.)๊ฐ new_id์ ๋์ ์์นํ๋ค๋ฉด ๋์ ์์นํ ๋ง์นจํ(.) ๋ฌธ์๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
if(answer.length() >= 16){
answer = answer.substring(0, 15);
if(answer.charAt(answer.length()-1) == '.'){
answer = answer.substring(0,answer.length()-1);
}
}
// 7. new_id์ ๊ธธ์ด๊ฐ 2์ ์ดํ๋ผ๋ฉด, new_id์ ๋ง์ง๋ง ๋ฌธ์๋ฅผ new_id์ ๊ธธ์ด๊ฐ 3์ด ๋ ๋๊น์ง ๋ฐ๋ณตํด์ ๋์ ๋ถ์
๋๋ค.
while(answer.length()<3) {
answer += answer.charAt(answer.length()-1);
}
return answer;
}
}
๊ณ ์น ๋ถ๋ถ ํ์ด
- ์ฝ๋ ์คํ์ ๋ค ํต๊ณผ๋์์ง๋ง ์ ์ถํ์ฌ ์ฑ์ฒจํ๋ ๋ช ๋ถ๋ถ์์ ์คํจ๊ฐ ๋ ์ ์ฝ๋๋ฅผ ๋ค์ ์์ ํด๋ณด์๋ค.
3. new_id์์ ๋ง์นจํ(.)๊ฐ 2๋ฒ ์ด์ ์ฐ์๋ ๋ถ๋ถ์ ํ๋์ ๋ง์นจํ(.)๋ก ์นํํฉ๋๋ค.
์์ ๊น๊ฒ ์๊ฐํ๋๊ฒ ๊ฐ๋ค.
for๋ฌธ์ ๋๋ฒ ๋๋ฆฌ์ง ์์๋ replace๋ฅผ ์ฌ์ฉํ์ฌ ".."๋ฅผ ์ฐพ์ "."๋ก ๋ณํํด ์ฃผ์ด ์ข ๋ ์๋๋ฅผ ๋์๋ค.
๊ทธ๋ฌ๋๋ indexOf์๋ฌ๊ฐ ๋จ๋ ๊ฒ์ด์๋ค.
๋๋ฒ๊น
ํด๋ณด๋
// 4. new_id์์ ๋ง์นจํ(.)๊ฐ ์ฒ์์ด๋ ๋์ ์์นํ๋ค๋ฉด ์ ๊ฑฐํฉ๋๋ค.
if(answerTmp.charAt(0) == '.'){
answer = answerTmp.substring(1, answerTmp.length());
}
if(answerTmp.charAt(answerTmp.length()-1) == '.'){
answer = answer.substring(0,answerTmp.length()-1);
}
์ด ๋ถ๋ถ์์ ์๋ฌ๊ฐ ๋๋ ๊ฒ์ด์๋๋ฐ
๋ง์ฝ new_id๊ฐ "." ์ธ ์ํ๋ก ๋ง์นจํ๋ฅผ ์์ ์ answer์ ๋ฃ๋๋ค๋ฉด answer.charAt(answer.length()-1)์์ ์๋ฌ๊ฐ ๋๋ค.
๊ทธ๋์ if(answer.length() > 0) ๋ฅผ ์ถ๊ฐํ์๋ค.
๋ง์ถ ํ์ด
import java.util.*;
class Solution {
public String solution(String new_id) {
String answer = "";
// 1. new_id์ ๋ชจ๋ ๋๋ฌธ์๋ฅผ ๋์๋๋ ์๋ฌธ์๋ก ์นํํฉ๋๋ค.
new_id = new_id.toLowerCase();
// 2. new_id์์ ์ํ๋ฒณ ์๋ฌธ์, ์ซ์, ๋นผ๊ธฐ(-), ๋ฐ์ค(_), ๋ง์นจํ(.)๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
for(char x : new_id.toCharArray()){
if(Character.isLowerCase(x) || x == '-' || x == '_' || x == '.' || (x >= 48 && x <=57)){
answer += x;
}
}
// 3. new_id์์ ๋ง์นจํ(.)๊ฐ 2๋ฒ ์ด์ ์ฐ์๋ ๋ถ๋ถ์ ํ๋์ ๋ง์นจํ(.)๋ก ์นํํฉ๋๋ค.
answer = answer.replace("..", ".");
while (answer.contains("..")) {
answer = answer.replace("..", ".");
}
// 4. new_id์์ ๋ง์นจํ(.)๊ฐ ์ฒ์์ด๋ ๋์ ์์นํ๋ค๋ฉด ์ ๊ฑฐํฉ๋๋ค.
if(answer.length() > 0){
if(answer.charAt(0) == '.'){
answer = answer.substring(1);
}
}
if(answer.length() > 0) {
if (answer.charAt(answer.length() - 1) == '.') {
answer = answer.substring(0, answer.length() - 1);
}
}
// 5. new_id๊ฐ ๋น ๋ฌธ์์ด์ด๋ผ๋ฉด, new_id์ "a"๋ฅผ ๋์
ํฉ๋๋ค.
if(answer.isBlank()){
answer = "a";
}
// 6. new_id์ ๊ธธ์ด๊ฐ 16์ ์ด์์ด๋ฉด, new_id์ ์ฒซ 15๊ฐ์ ๋ฌธ์๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ฌธ์๋ค์ ๋ชจ๋ ์ ๊ฑฐํฉ๋๋ค. ๋ง์ฝ ์ ๊ฑฐ ํ ๋ง์นจํ(.)๊ฐ new_id์ ๋์ ์์นํ๋ค๋ฉด ๋์ ์์นํ ๋ง์นจํ(.) ๋ฌธ์๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
if(answer.length() >= 16){
answer = answer.substring(0, 15);
if(answer.charAt(answer.length()-1) == '.'){
answer = answer.substring(0,answer.length()-1);
}
}
// 7. new_id์ ๊ธธ์ด๊ฐ 2์ ์ดํ๋ผ๋ฉด, new_id์ ๋ง์ง๋ง ๋ฌธ์๋ฅผ new_id์ ๊ธธ์ด๊ฐ 3์ด ๋ ๋๊น์ง ๋ฐ๋ณตํด์ ๋์ ๋ถ์
๋๋ค.
while(answer.length()<3) {
answer += answer.charAt(answer.length()-1);
}
return answer;
}
}