[JAVA]프로그래머스 1단계 : 서울에서 김서방 찾기
https://programmers.co.kr/learn/courses/30/lessons/12919
문제
String형 배열 seoul의 element중 Kim의 위치 x를 찾아, 김서방은 x에 있다는 String을 반환하는 함수, solution을 완성하세요. seoul에 Kim은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
제한 사항
- seoul은 길이 1 이상, 1000 이하인 배열입니다.
- seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
- Kim은 반드시 seoul 안에 포함되어 있습니다.
String형 배열 seoul의 element중 Kim의 위치 x를 찾아, 김서방은 x에 있다는 String을 반환하는 함수, solution을 완성하세요. seoul에 Kim은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
- seoul은 길이 1 이상, 1000 이하인 배열입니다.
- seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
- Kim은 반드시 seoul 안에 포함되어 있습니다.
풀이
- ArrayList를 사용해서 indexof()로 해당 인덱스 번호를 갖고오도록 했다.
import java.util.ArrayList;
public class Soultion1 {
public String solution(String[] seoul) {
String answer = null;
String lname = "Kim";
ArrayList<String> list = new ArrayList<String>();
for(String s : seoul) {
list.add(s);
}
for(int i=0; i<seoul.length; i++) {
if(lname == list.get(i).toString()) {
answer += "김서방은 "+i+"에 있다";
}
}
return answer;
}
}
import java.util.ArrayList;
public class Soultion1 {
public String solution(String[] seoul) {
String answer = null;
String lname = "Kim";
ArrayList<String> list = new ArrayList<String>();
for(String s : seoul) {
list.add(s);
}
for(int i=0; i<seoul.length; i++) {
if(lname == list.get(i).toString()) {
answer += "김서방은 "+i+"에 있다";
}
}
return answer;
}
}
이클립스에서는 실행결과가 잘나오는데, 프로그래머스에서는 다음과 같이 통과되지 못했다.이유가 뭘까?
문제점 발견!
1) 문자열끼리 비교할 땐 equals 메소드를 활용해야 한다
파이썬이나 js와 다르게 ==을 이용한 문자열 비교가 불가능하다. 그래서 ==을 할 경우 주소값을 비교하게 된다.
정리
- equals 메소드는 비교하고자 하는 대상의 내용 자체를 비교
- == 연산자는 비교하고자 하는 대상의 주소값을 비교
2) =과 +=의 차이
String은 위에서 넣어준 null 문자열을 보고 이어붙이기를 한다.
그래서 결과가 null김서방은 1에 있다. 가 되어버린다.
answer를 초기화 할 떼 단순 " "로 바꿔
answer += "김서방은 "+i+"에 있다."
(x)
answer = "김서방은 "+i+"에 있다."
(o)
로 해서 넣어주면 될 것 같다.
수정 코드
import java.util.ArrayList;
class Solution {
public String solution(String[] seoul) {
String answer = "";
String lname = "Kim";
ArrayList<String> list = new ArrayList<String>();
for(String s : seoul) {
list.add(s);
}
for(int i=0; i<seoul.length; i++) {
if(lname.equals(list.get(i).toString())) {
answer = "김서방은 "+i+"에 있다";
}
}
return answer;
}
}
import java.util.ArrayList;
class Solution {
public String solution(String[] seoul) {
String answer = "";
String lname = "Kim";
ArrayList<String> list = new ArrayList<String>();
for(String s : seoul) {
list.add(s);
}
for(int i=0; i<seoul.length; i++) {
if(lname.equals(list.get(i).toString())) {
answer = "김서방은 "+i+"에 있다";
}
}
return answer;
}
}
Author And Source
이 문제에 관하여([JAVA]프로그래머스 1단계 : 서울에서 김서방 찾기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wldus9503/JAVA프로그래머스-1단계-서울에서-김서방-찾기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)