👨‍💻Programming/알고리즘 풀이

JAVA - 사이냅소프트 면접 문제, Prac, 이름 중복 체크

코너(Corner) 2020. 11. 13.
반응형

사이냅소프트 면접 문제 . Lv.1 Algorithm

 

현재 진행 된 기능, String 배열의 사이즈를 정하고 인원을 설정 할 수 있다.

String 배열 내부의 중복된 인원 체크를 할 수 있다.

static을 사용하여 메소드 기능을 이용한 방식을 선택 하였다.발견된 오류, 내부 배열 정렬을 진행 하는데,중복을 제거 방식을 구현하지 못함.

 

 

 사이냅소프트 면접 문제 
  
  주어진 문자열(공백 없이 쉼표로 구분되어 있음)을 가지고 아래 문제에 대한 프로그램을 작성


  이유덕,이재영,권종표,이재영,박민호,강상희,이재영,
  김지완,최승혁,이성연,박영서,박민호,전경헌,송정환,
  김재성,이유덕,전경헌
 
  1. 김씨와 이씨는 각각 몇 명인가. 
  2. 이재영 이라는 이름이 몇 번 반복 되는가. 
  3. 중복을 제거한 이름을 출력 
  4. 중복을 제거한 이름을 오름차순으로 정렬 출력


출력문

 

 

 

 


 

소스 코드

 

package Lv1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
public class Prac {
	public static void main(String[] args) {
		String str = "이유덕,이재영,권종표,이재영,박민호,강상희,이재영,김지완,최승혁,성연,박영서,박민호,전경헌,송정환,김재성,이유덕,전경헌";
		String[] name = str.split(",");
		ArrayList<String> name_list = new ArrayList<>();

		for (int i = 0; i < name.length; i++) {
			name_list.add(name[i]);
		}

		//김씨 이씨
		int cntK = 0, cntL = 0;
		for (int i = 0; i < name.length; i++) {
			if(name[i].contains("김")) {
				cntK++;
			}else if(name[i].contains("이")){
				cntL++;
			}
		}
		System.out.println("김씨: "+cntK);
		System.out.println("이씨: "+cntL);

		//이재영 몇번반복?
		int cnt=0;
		for (int i = 0; i < name.length; i++) {
			if(name[i].equals("이재영")) {
				cnt++;
			}
		}
		System.out.println("이재영 몇번 반복?");
		System.out.println(cnt);

		//중복 제거한 이름 출력
//		HashSet<String> name_set = new HashSet<>();
		HashSet name_set = new HashSet();
		for (int i = 0; i < name.length; i++) {
			name_set.add(name[i]);
			
		}
		System.out.println(name_set);

	 
		
		//중복 제거하고 오름차순으로 정렬
		// Hash를 다시 Array로 변환해서 정렬 후 출력 
		ArrayList name_set2 = new ArrayList(name_set); 
		Collections.sort(name_set2); // 정렬 
	    int size=name_set2.size();
        for(int i=0;i<=size-1; i++){
            System.out.print(name_set2.get(i)+", ");
        }
 
	}



}

 


 

반응형

댓글