Language/JAVA

[프로그래머스] 서울에서 김서방 찾기

paran21 2022. 1. 17. 13:46

처음에 사용했던 방법은 배열에서 위치를 index로 반환하는 메소드를 이용하는 것이다.

indexOf는 List로 배열을 변환하여 사용해야 한다.

import java.util.Arrays;

class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        //indexOf를 사용하기 위해 배열을 List로 변환해야 함
        answer = "김서방은 " + Arrays.asList(seoul).indexOf("Kim") + "에 있다";
        return answer;
    }
}

 

다른 방법으로는 for문을 이용해서 배열의 위치별로 값을 비교하는 방법이 있다.

+ 처리 시간은 대체로 위에 배열로 푼 방법이 덜 걸린다. Loop가 생각보다 시간을 많이 잡아먹는 편인것 같다.

import java.util.Arrays;

class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        for (int i = 0; i < seoul.length; i++) {
            if (seoul[i].equals("Kim")) {
                int x = i;
                answer = "김서방은 " + x + "에 있다";
                break;
            }
        }
        return answer;
    }
}

 

==과 equals()의 차이 (참고: https://coding-factory.tistory.com/536)

  • == : 두 대상의 주소값을 비교.
    • int, char는 대상에 주소값을 가지지 않는 형태로 사용되기 때문에 ==로 비교 가능.
  • equals() : String 클래스의 메소드로. 비교하고자 하는 두 대상의 값 자체를 비교.
    • String은 일반적인 타입이 아니라 클래스
    • 클래스는 기본적으로 생성 시 주소값이 부여됨
    • 따라서 같은 값을 부여하더라도 서로간의 주소값이 다름.

'Language > JAVA' 카테고리의 다른 글

[프로그래머스] 완주하지 못한 선수  (0) 2022.01.17
[프로그래머스] 수박수박수박수박수박수?  (0) 2022.01.17
[프로그래머스] 문자열 다루기 기본  (0) 2022.01.17
#char  (0) 2022.01.17
#ArrayList + List  (0) 2022.01.17