Programing/Algorithm

Java, Javascript 프로그래머스 Level1 서울에서 김서방 찾기

리커니 2018. 5. 14. 10:21
반응형

Java, Javascript 프로그래머스 Level1 서울에서 김서방 찾기

 

 

읽어보시면 아시겠지만, 문제는 간단합니다.

String배열에서 Kim 문자열이 있는 인덱스를 리턴하면 됩니다.

 

자바 코드부터 보도록 하죠.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class FindKim {
    public String findKim(String[] seoul){
        //x에 김서방의 위치를 저장하세요.
        int x = 0;
        for(int i=0; i<seoul.length; i++){
            if(seoul[i].equals("Kim")){
                x = i;
                break;
            }
        }
        //x = Arrays.asList(seoul).indexOf("Kim");
        return "김서방은 "+ x + "에 있다";
    }
    
    // 실행을 위한 테스트코드입니다.
    public static void main(String[] args) {
        FindKim kim = new FindKim();
        String[] names = {"Queen""Tod","Kim"};
        System.out.println(kim.findKim(names));
    }
}
cs

 

대부분의 분들이 저와 같이 풀었더군요.

배열의 개수만큼 반복문을 돌아 Kim이 있는 인덱스를 리턴하는 방식.

 

아래 주석은 배열을 List 형태로 바꿔 Kim이 있는 인덱스를 리턴하는 방식입니다.

문제의 조건에 오직 한 번만 이라는 조건이 있기 때문에 사용 가능하죠.

List의 indexOf 메소드는 가장 작은 인덱스를 리턴하기 때문입니다.

 

 

 

속도의 차이는 크게 없지만 코드는 간결하니 보기 좋네요.

다음은 Javascript 코드 입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function findKim(seoul){
  var idx = 0;
  //함수를 완성하세요
  for(var i=0; i<seoul.length; i++){
      if(seoul[i]==="Kim"){
          idx = i;
          break;
      }
  }
  //idx = seoul.indexOf("Kim");
  return "김서방은 " + idx + "에 있다";
}
 
// 실행을 위한 테스트코드입니다.
console.log( findKim(["Queen""Tod""Kim"]));
cs

 

이 것도 마찮가지로 for문을 반복하는 방법과 배열의 Index를 리턴하는

indexOf 메소드를 사용하는 방식을 사용 할 수 있습니다.

 

배열에서 indexOf 메소드를 사용하면 해당 값이 있는 인덱스를 쉽게 구할 수 있다.

는 알고 넘어가도록 합시당~

아래는 Java의 indexOf와 lastIndexOf 메소드에 대한 설명이니 참고하세요~

 

 

문제출처 : https://programmers.co.kr/

반응형