EXCELSIOR

[Level1]서울에서김서방찾기 (FindKim) 본문

카테고리 없음

[Level1]서울에서김서방찾기 (FindKim)

Excelsior-JH 2016. 10. 18. 10:01

1. 문제

findKim 함수(메소드)는 String형 배열 seoul을 매개변수로 받습니다.

seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하세요.
seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.


2. 풀이

1) 내가 작성한 코드

- for문을 이용하여 문제를 풀었다. 

      
public class FindKim {
    public String findKim(String[] seoul){
        //x에 김서방의 위치를 저장하세요.
        int x = 0;
        for(; x<seoul.length; x++){
           if(seoul[x].equals("Kim"))
               break;
        }
        return "김서방은 "+ x + "에 있다";
    }

    // 실행을 위한 테스트코드입니다.
    public static void main(String[] args) {
        FindKim kim = new FindKim();
        String[] names = {"Queen", "Tod","Kim"};
        System.out.println(kim.findKim(names));
    }
}

- 앞서 Python에서도 같은 문제를 풀었기 때문에 java에서도 간단하게 해결할 수 있는 방법이 없는지 찾아 보았다.

     
import java.util.Arrays;
public class FindKim {
    public String findKim(String[] seoul){
        //x에 김서방의 위치를 저장하세요.
       
        return "김서방은 "+ Arrays.asList(seoul).indexOf("Kim") + "에 있다";
   }
    // 실행을 위한 테스트코드입니다.
    public static void main(String[] args) {
        FindKim kim = new FindKim();
        String[] names = {"Queen", "Tod","Kim"};
        System.out.println(kim.findKim(names));
    }
}

- 위의 코드와 같이 한줄로 해결할 수 있었다. Arrays 

3. 알아둘것
1) Arrays 클래스
- sort : 배열을 오름차순으로 정렬
                   
String[] strArray = {"a", "c", "b"};
Arrays.sort(strArray);
System.out.println(Arrays.toString(strArray));
 
int[] intArray = {1,3,2};
Arrays.sort(intArray);
System.out.println(Arrays.toString(intArray));

- equals : 두개의 배열이 같은지 비교, true or false 리턴
                   
 
String[] strArray = {"a", "c", "b"};
Arrays.sort(strArray);
System.out.println(Arrays.toString(strArray));
 
int[] intArray = {1,3,2};
Arrays.sort(intArray);
System.out.println(Arrays.toString(intArray));

- binarySearch : 이진탐색 함수. 
                   
int[] intArray1 = {1, 5, 3, 2, 4};
System.out.println(Arrays.binarySearch(intArray1, 2));
 
int[] intArray2 = {1, 2, 3, 4, 5};
System.out.println(Arrays.binarySearch(intArray2, 2));
                                                                                                                                         [출처: http://donggov.tistory.com/45]

- asListReturns a fixed-size list backed by the specified array.






Comments