728x90
프로그래머스 Java 1단계 서울에서 김서방 찾기 문제입니다.
문제 설명
String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
제한 사항
- seoul은 길이 1 이상, 1000 이하인 배열입니다.
- seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
- "Kim"은 반드시 seoul 안에 포함되어 있습니다.
입출력 예
seoul | return |
["Jane", "Kim"] | "김서방은 1에 있다" |
문제 해결 방법
① 입력 받은 seoul 배열과 문자열 "Kim"이 같은 인덱스 값을 탐색
더보기
class Solution {
public String solution(String[] seoul) {
for(int i = 0; i < seoul.length; i++){
if(seoul[i].equals("Kim"))
return "김서방은 " + i + "에 있다";
}
return "";
}
}
※ 문자열 비교시 주의사항
Java에서 문자열을 비교할 수 있는 방법은 여러가지가 있는데, 대표적으로는 ==, equals, compareTo 등이 있습니다.
다만 ==으로 문자열을 비교할 경우, 비교하는 문자열이 같더라도 false를 반환하는 상황이 발생합니다.
그 이유는 문자열을 비교하는 것이 아니라, 두 객체가 같은지만 비교하기 때문입니다.
따라서, 문자열을 비교할 때에는 ==를 사용하지 않고, equals 등 비교 메소드를 사용해야합니다.
다음은 간단한 예시입니다.
문자열 비교 예시
String str1 = "ABCDE";
String str2 = "ABCDE";
String str3 = new String("ABCDE");
String str4 = new String("AAAAA");
System.out.println("str1 == str2 ? " + (str1 == str2));
System.out.println("str2 == str3 ? " + (str2 == str3));
System.out.println("str1.equals(str3) ? " + str1.equals(str3));
System.out.println("str2.compareTo(str3) ? " + str2.compareTo(str3));
System.out.println("str3.compareTo(str4) ? " + str3.compareTo(str4));
System.out.println("str4.compareTo(str3) ? " + str4.compareTo(str3));
문자열 비교 예시 결과
str1 == str2 ? true
str2 == str3 ? false
str1.equals(str3) ? true
str2.compareTo(str3) ? 0
str3.compareTo(str4) ? 1
str4.compareTo(str3) ? -1
결과 정리
== | equals | compareTo |
객체가 같은지 비교 | 인자가 String일 경우 문자열 비교 | 문자열 비교 및 사전상 순서 비교 |
문자열 비교에 적절하지 않음 | 같을 경우 ▶ true 다를 경우 ▶ false |
같을 경우 ▶ 0 호출 객체가 인자보다 빠를 경우 ▶ 음수 호출 객체보다 인자가 빠를 경우 ▶ 양수 |
※ 위 코드는 해결 방법 중 한가지이며 더 효율적인 코드가 있을 수 있습니다.
문제 풀어보기 ▶ https://programmers.co.kr/learn/courses/30/lessons/12919?language=java
'programmers code review > _step1' 카테고리의 다른 글
문자열 내림차순으로 배치하기 (0) | 2021.08.29 |
---|---|
문자열 다루기 기본 (1) | 2021.08.28 |
프로그래머스 위클리 챌린지 4주차 (0) | 2021.08.25 |
소수 찾기 (4) | 2021.08.24 |
수박수박수박수박수박수? (0) | 2021.08.24 |
댓글