본문 바로가기
코딩 테스트

프로그래머스 - 신규 아이디 추천 자바 java

by 주용사 2023. 1. 9.
728x90

문제 예시로만 풀다가 계속 틀려서 수정보완.

import java.util.*;
class Solution {
          public String solution(String new_id) {
	        String answer = "";
	        char[] char_array = new_id.toCharArray();
	        Queue<Character> que = new LinkedList<>();
	        Queue<Character> que2 = new LinkedList<>();
	        int continue_check = 0;
	        int size = 0;
	        StringBuilder sb = new StringBuilder();
	        for(int ii = 0 ; ii < char_array.length ; ii++)
	        {
	        	
	        	/* case1 */
	        	if(char_array[ii] >= 'A' && char_array[ii] <= 'Z')
	        	{
	        		char_array[ii] =(char) (char_array[ii] + 32);
	        	}
	        	/* case2 */
	        	if((char_array[ii] >= 'a' && char_array[ii] <= 'z')
	        			|| (char_array[ii] >= '0' && char_array[ii] <= '9')
	        			|| char_array[ii] == '-' 
	        			|| char_array[ii] == '_'
	        			|| char_array[ii] == '.')
	        	{
	        		que.add(char_array[ii]);
	        	}
	        }
	        
	        /* case3 */
	        size = que.size();
	        for(int ii = 0 ; ii < size ; ii++)
	        {
	        	
	        	char temp = que.poll();
	        	if(continue_check == 0 && temp == '.')
	        	{
	        		continue_check++;
	        		que2.add(temp);
	        	}
	        	else if(continue_check == 0 && temp != '.')
	        	{
	        		que2.add(temp);
	        	}
	        	else if(continue_check == 1 && temp != '.')
	        	{
	        		continue_check = 0;
	        		que2.add(temp);
	        	}
	        	else if(continue_check > 1 && temp != '.')
	        	{	
	        		continue_check = 0;
	        	}
	        }
	        que.clear();
	       
	        /* case4 */
	        size = que2.size();
	      for(int ii = 0 ; ii < size ; ii++)
	      {
	    	  char temp = que2.poll();
	    	  if(ii == 0 && temp == '.')
	    	  {}
	    	  else if(ii == size -1 && temp == '.')
	    	  {}
	    	  else
	    		  que.add(temp);
	    		  
	      }

	      /* case5 */
	      size = que.size();
	      if(que.size() == 0)
	    	  que.add('a');
	      
	      /* case6 && case7 */
	      size = que.size();
	      if(size >= 16)
	      {
	    	  for(int ii = 0 ; ii < 15 ; ii++)
	    	  {
	    		  char temp = que.poll();
	    		  if(ii == 14 && temp == '.')
	    		  {}
	    		  else
	    			  sb.append(temp);
	    	  }
	      }
	      else if(size <= 2)
	      {
	    	  if(size == 1)
	    	  {
	    		  char temp = que.poll();
	    		  sb.append(temp);
	    		  sb.append(temp);
	    		  sb.append(temp);
	    	  }
	    	  
	    	  if(size == 2)
	    	  {
	    		  sb.append(que.poll());
	    		  char temp = que.poll();
	    		  sb.append(temp);
	    		  sb.append(temp);
	    		  
	    	  }
	      }
	      else
	      {
	    	  for(int ii = 0 ; ii < size ; ii++)
	    		  sb.append(que.poll());
	      }
	      
	      
	      answer = sb.toString();

	        return answer;
	    }
}

https://programmers.co.kr/learn/courses/30/lessons/72410?language=java

728x90