2023.04.11(3)

Jay Ji·2023년 4월 11일
0
post-thumbnail

Problem

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 solution 구축. 문제 바로가기

What I tried

나의 전략은 아래와 같았다:

  1. String형 배열의 seoul element 중 Kim 의 위치를 찾고 "김서방은 x에 있다" 반환
  2. seoul을 for문을 사용하여 돌린다
  3. for문 안에 if 문을 사용하여 KIM 과 같다면 해당 index 위치 x에 저장
  4. "김서방은 x에 있다" 출력

What was Wrong?

class Solution {
    public String solution(String[] seoul) {

        int x = 0;
        for (int i = 0; i < seoul.length; i++) {
            if (seoul[i] == "Kim") {
                x = seoul.length;
            }
        }
        String answer = "김서방은 " + x + "에 있다";
        return answer;
    }
}

정말 놀랍게도 한번에 답을 찾을 수 있었다. 하지만 IntelliJ에서 돌릴땐 답이 나왔지만, 정작 프로그래머스에서는 자꾸 다른 값이 나왔다.

What I Learned

class Solution {
    public String solution(String[] seoul) {

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

위 코드와 같이 바꾸니 프로그래머스에서도 잘 작동 되었다.
해당 문제를 풀면서 아래와 같이 배울 수 있었다:

  1. equals() method - 처음에 구축한 코드와 수정한 코드와 가장 큰 차이점은 equals() 부분. 2개의 String에 == operator가 사용이 불가하다는 것을 알았다 (근데 왜 IntelliJ에서 돌아갔을까..?) 그래서 == operator를 대신해주기 위해 equals()를 사용.
  2. break; - 해당 부분은 굳이 없어도 되지만(확인해봄), 만약 seoul array가 굉장히 길고 KIM이 앞쪽에 있다면, 굳이 끝까지 돌지 않아도 됨.

처음부터 스스로 끝까지 코드를 구축하고 답변을 찾은 줄 알고 좋아했으나, 프로그래머스에서 값이 제대로 안나와서 속상. 다음번엔 프로그래머스에서까지 100점 받아야지.

profile
Think out of the Box

0개의 댓글