본문 바로가기

서울에서 김서방 찾기

programmers code review/_step1 2021. 8. 26.
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
 

코딩테스트 연습 - 서울에서 김서방 찾기

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니

programmers.co.kr

 

 

 

'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

댓글