[태그:] programmers

  • 프로그래머스 스킬테스트

    두 문제를 30분안에 풀어야 된다. 찾아보고 하면 한 시간 정도 적당해 보인다. 코드를 다 외우고 있어야 하나? 주어진 string과 숫자 n으로 n번째 기준으로 정렬하는 문제다.

    
    import java.util.TreeMap;
    import java.util.Iterator;
    import java.util.Set;
    
    public class Main {
    public static void main(String[] args){
    	
    	String[] strings = new String[3];
    	strings[0]="sun";
    	strings[1]="bed";
    	strings[2]="car";
    
    	
    	String[] target = new String[strings.length];
    	TreeMap <Integer, String> temp = new TreeMap<>();
    	target = strings;
    	int key;
    	int n=2;
    	
    	for (int i=0; i<strings.length; i++) {
    		key = target[i].charAt(n)-'0';
    		System.out.println(key);
    		temp.put(key,target[i]);
    	}
    
    	Iterator itr = temp.keySet().iterator();
    //	System.out.println(strings.length);
    	while(itr.hasNext())
    		System.out.println(temp.get(itr.next()));
    }
    
    }
  • 프로그래머스 전화번호 목록

    프로그래머스 전화번호 목록

    hashmap으로 접근하니 좀 빨리 풀린다.

    
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Set;
    
    public class Main {
    	public static void main(String[] args) {
    		String[] participant = new String[3];
    
    		participant[0] = "123";
    		participant[1] = "456";
    		participant[2] = "789";
    
    		String remains = new String();
    		HashMap<Integer, String> temp = new HashMap<>();
    
    		for (int i = 0; i < participant.length; i++) {
    			temp.put(i, participant[i]);
    		}
    		Set set = temp.keySet();
    		Iterator itr = set.iterator();
    		boolean answer = false;
    
    		// System.out.println(temp.values());
    		int key = 0;
    		while (itr.hasNext()) {
    			key = (int) itr.next();
    			// 비교할 문자열 추출.
    			for (int i = 0; i < temp.size(); i++) {
    				remains = temp.get(i);
    				if (i != key) {
    //					System.out.println(remains);
    //					System.out.println(i);
    
    //					System.out.println(temp.get(key));
    //					System.out.println(key);
    
    //					System.out.println(remains.startsWith(temp.get(key)));
    					if (remains.startsWith(temp.get(key)) == true) {
    						answer = false;
    						break;
    
    					}
    					else
    						answer = true;
    				}
    
    			} // for
    			
    			if (answer == false)
    				break;
    
    //			System.out.println(temp.get(key));
    //			System.out.println(key);
    		} // while
    		
    		System.out.println(answer);
    
    	}// void main
    
    } // Main

    level 2가 1보다 더 쉬워보인다.

    eclipse에서 컴파일후 웹 페이지에 복사했는데, 칸도 안맞도 다시 맞추려니 어렵다. eclipse 형식을 아예 웹 페이지 형식으로 해야 될 듯 하다.

  • 프로그래머스 완료하지 못한 선수

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Set;
    
    public class Main {
    public static void main(String[] args){
    	String[] participant = new String[5];
    	String[] completion = new String[4];
    
    	participant[0] = "marina";
    	participant[1] = "josipa";
    	participant[2] = "nikola";
    	participant[3] = "vinko";
    	participant[4] = "filipa";
    
    	completion[0] = "josipa";
    	completion[1] = "filipa";
    	completion[2] = "marina";
    	completion[3] = "nikola";
    
        HashMap <Integer, String> temp = new HashMap<>();
        for (int i=0; i< participant.length; i++)
        {
           temp.put(i,participant[i]);
        }
        Set set = temp.keySet();
    
        Iterator itr = set.iterator();
        int[] removeTarget = new int[100];
        
        for (int i=0;i<100;i++)
        	removeTarget[i]=-1;
    
        while(itr.hasNext()) {
    	int key = (int)itr.next();
    
        for (int i=0; i< completion.length; i++) {
    //		System.out.println(temp.get(key));
    //		Syst/em.out.println(temp.values());
    
    		if(temp.get(key) == completion[i])
    			//temp.remove(key);
    			//지우는 대신 추가.
    			// 표시
    			removeTarget[i]=key;
    //			 System.out.println(temp.values());
        }
        }
        for(int i=0;i<100;i++) {
        	//System.out.println(removeTarget[i]);
        	if(removeTarget[i] >= 0)
    			temp.remove(removeTarget[i]);
        }
        HashMap.Entry<Integer, String> entry = temp.entrySet().iterator().next();
        System.out.println(temp.get(entry.getKey()));
    }
    }

    hashmap을 추가한 다음 비교하여 바로 지우고 싶었다. 그러나 ConcurrentModificationException이 중단시켰다. 여러 삽질 후 표기를 하여 나중에 한번에 지웠다. 이상한 점은 eclipse는 잘 되는데, 프로그래머스 컴파일은 잘 안된다. 나 말고도 여러 사람 그런 듯 하다.

    level 1인데 시간을 너무 많이 걸렸다.