-
[자바(JAVA)] 서울에서 김서방 찾기(equals(), Arrays.asList().indexOf() ), 향상된 for문프로그래머스/자바(JAVA) 2023. 6. 17. 10:37728x90
✅ 내 풀이
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 + "에 있다"; }
👇 풀이
- int x = Arrays.asList(seoul).indexOf("Kim");
- Arrays.asList(seoul)을 사용하여 seoul 배열을 List로 변환합니다.
- indexOf("Kim") 메서드를 사용하여 "Kim"이라는 문자열이 List에서 처음으로 등장하는 인덱스를 찾습니다.
- 찾은 인덱스를 x에 저장합니다.
- 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'프로그래머스 > 자바(JAVA)' 카테고리의 다른 글
[자바(JAVA)] 문자 리스트를 문자열로 변환하기 / stream, .collect, Collector.joinning(), String.join (0) 2023.07.01 [자바(JAVA)] 나누어 떨어지는 숫자 배열 / Arrays.copyOf(), sort(), ArrayList<>, Collections.sort() (0) 2023.06.19 [자바(JAVA)] 문자열 내 p와 y의 개수 (toLowerCase) (0) 2023.06.17 [자바(JAVA)] 나누어 떨어지는 숫자 배열을 ArrayList로 풀어보기( ArrayList<Integer>, Collections.sort() ) (0) 2023.06.16 [자바(JAVA)] 나누어 떨어지는 숫자 배열 (0) 2023.06.16 - int x = Arrays.asList(seoul).indexOf("Kim");