ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바(JAVA)] 서울에서 김서방 찾기(equals(), Arrays.asList().indexOf() ), 향상된 for문
    프로그래머스/자바(JAVA) 2023. 6. 17. 10:37
    728x90

     

     

     

     

    ✅ 내 풀이 

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

     

     

     

    equals는 JAVA에서 두 객체의 서로 동일한지 비교하는 메서드이다.

    Object를 상속받았기 때문에 모든 메서드에서 사용할 수 있다.

    자바의 원시 타입인 int, double, boolean 등에 대해서도 equals 메서드를 사용할 수 있는데 이 경우에는 원시 타입을 해당하는 객체 래퍼 클래스로 자동 박싱하여 비교한다.

    int num1 = 10;
    int num2 = 20;
    
    boolean isEqual = Integer.valueOf(num1).equals(Integer.valueOf(num2)); // false

     

     

     

     

    배열에 대해서도 equals 메서드를 사용할 수 있습니다. 배열의 내용이 같은지 비교하기 위해서는 Arrays 클래스의 equals 메서드를 사용하면 된다.

    int[] arr1 = {1, 2, 3};
    int[] arr2 = {1, 2, 3};
    
    boolean isEqual = Arrays.equals(arr1, arr2); // true

    위의 예시에서는 Arrays.equals 메서드를 사용하여 arr1과 arr2 배열의 내용을 비교했다.

     equals 메서드는 모든 객체에 대해 사용할 수 있으며, 숫자, 문자열, 배열 등 모든 타입에 대해 내용 비교를 수행할 수 있습니다.

     

     

     

     

    ✅ 다른 풀이

    import java.util.Arrays;
    public class FindKim {
        public String findKim(String[] seoul){
            //x에 김서방의 위치를 저장하세요.
            int x = Arrays.asList(seoul).indexOf("Kim");        
            return "김서방은 "+ x + "에 있다";
        }

     

     

    👇  풀이

    1. int x = Arrays.asList(seoul).indexOf("Kim");
      • Arrays.asList(seoul)을 사용하여 seoul 배열을 List로 변환합니다.
      • indexOf("Kim") 메서드를 사용하여 "Kim"이라는 문자열이 List에서 처음으로 등장하는 인덱스를 찾습니다.
      • 찾은 인덱스를 x에 저장합니다.
    2. return "김서방은 "+ x + "에 있다";
      • "김서방은 " 문자열과 x 값을 문자열로 결합합니다.
      • 결합한 문자열에 "에 있다"를 더해서 최종 결과를 반환합니다.

     


     

     

    Arrays.asList(seoul).indexOf("Kim");    

     

    1. asList

    asList는 자바에서 배열을 리스트로 변환하기 위한 메서드이다. (java.util.Arrays 클래스에 있음)
    배열 -> 리스트
    기본형 배열의 경우 각 요소는 해당 기본형의 래퍼 클래스로 자동 변환된다.


    예시)

     

     

     

    2. indexOf("Kim")

     

    indexOf()
    컬렉션 또는 문자열에서 특정 요소 또는 문자열이 처음으로 등장하는 인덱스를 반환하는 메서드이다.
    이 메서드는 주어진 요소 또는 문자열을 찾아서 해당 위치의 인덱스를 반환하며, 찾지 못한 경우 -1을 반환한다.

    배열에서 특정 문자열이 처음으로 나오는 인텍스를 찾는건 indexOf()만 있으며, 배열형의 경우 List인터체이스를 구현한 컬렉션 클래스에서만 사용이 가능하다. 
    일반 배열에서는 사용할 수 없기 때문에 Arrays.asList()로 변환되었다.

    * indexOf() 메서드의 사용은 컬렉션과 문자열에서 약간 다를 수 있기 때문에 아래의 예시를 참고.

     

     

    1. 컬렉션에서의 indexOf()

    • List 인터페이스를 구현한 컬렉션 클래스에서 사용할 수 있습니다.
    • 메서드 시그니처: int indexOf(Object o)
    • 주어진 객체 o를 컬렉션에서 찾아서 처음 등장하는 위치의 인덱스를 반환합니다.
    • 찾지 못한 경우 -1을 반환합니다.

     

     

     

     

    2. 문자열에서의 indexOf()

    • String 클래스에 정의된 메서드로 문자열에서 사용할 수 있습니다.
    • 메서드 시그니처: int indexOf(String str)
    • 주어진 문자열 str을 호출한 문자열에서 찾아서 처음 등장하는 위치의 인덱스를 반환합니다.
    • 찾지 못한 경우 -1을 반환합니다.

     

     

     

     

     


    ✅ 다른 풀이 2

    import java.util.Arrays;
    
    class Solution {
       public String solution(String[] seoul) {
            for (int i = 0; i<seoul.length;i++)
                if (seoul[i].equals("Kim")){
                    return "김서방은 "+i+"에 있다";
                }
            return "-1";
        }
    }
    728x90
Designed by Tistory.