본문 바로가기
알고리즘 문제연습/기초 알고리즘

[프로그래머스] 신규아이디 추천

by 은z 2023. 2. 13.
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;

class Solution {
    public String solution(String new_id) {
        String answer = "";
		List<String> availStr = new ArrayList<>(Arrays.asList("-", "_", "."));

		String id = new_id.toLowerCase(); // 1단계
		List<Character> eachList = new ArrayList<>();

		for(int i=0; i<id.length(); i++) {
			char c = id.charAt(i);
			eachList.add(c);
		}

		List<String> step2 = eachList.stream().filter(each -> {
			return Character.isLowerCase(each) || (Character.isDigit(each)) || availStr.contains(String.valueOf(each));
		}).map(String::valueOf).collect(Collectors.toList());

		for(int i=0; i< step2.size(); i++) {
			if(i>0 && step2.get(i).equals(".")) { // 2번째부터고 "."이면
				if(step2.get(i-1).equals(".")) {
					step2.set(i-1, " ");
				}
			}
		}
		List<String> step3 = step2.stream().filter(each -> !Objects.equals(each, " ")).collect(Collectors.toList());

		if(step3.get(step3.size()-1).equals(".")) step3.remove(step3.size()-1);
		if(step3.size()>0 && step3.get(0).equals(".")) step3.remove(0);

		if(step3.size() == 0) step3.add("a");

		if(step3.size() > 15) {
			while (step3.size() > 15) {
				step3.remove(step3.size() - 1);
			}
		}

		if(step3.get(step3.size()-1).equals(".")) step3.remove(step3.size()-1);

		if(step3.size() < 3) {
			while (step3.size() < 3) {
				step3.add(step3.get(step3.size() - 1));
			}
		}

		for(String s : step3) answer += s;
		return answer;
    }
}

댓글