728x90

[문제 설명]

문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 뒤의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요.

 

[입출력 예]

my_string n result
"ProgrammerS123" 11 "grammerS123"
"He110W0r1d" 5 "W0r1d"

 

[차근 차근 생각해보기]

  • my_string 문자열 뒤에서 n번째부터 my_string의 마지막까지 잘라주고
  • answer에 넣어준 뒤 reutrn 해주기

 

[결과]

class Solution {
    public String solution(String my_string, int n) {
        String answer = my_string.substring(my_string.length()-n, my_string.length());
        return answer;
    }
}

 

[반성할 점]

  • 뒤의 n번째부터 마지막까지 자른 다는 생각을 하지 못했다.
  • java에서 문자열 자르는 방법을 검색해보고 난 후 저런 방법이 있다는 것을 보았다.
  • 아직 조금 더 차근차근 생각하는 것이 많이 부족한 것 같다.
  • 조급해하지 말고 차근 차근 생각하기..!
728x90
728x90

[문제 설명]

정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 n 번째 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요.

 

[입출력 예]

num_list n result
[2, 1, 6] 1 [2]
[5, 2, 1, 7, 5] 3 [5, 2, 1]

 

[차근 차근 생각해보기]

  1. answer의 배열의 길이를 n까지로 정해준다.
  2. n의 길이까지 돌면서
  3. answer 배열에 num_list의 i번째 요소를 넣어준다.

 

[결과]

<수정 전>

class Solution {
    public int[] solution(int[] num_list, int n) {
        int[] answer = new int[n];
        for(int i = 0; i < num_list.length; i++){
            if(i < n){
                answer[i] = num_list[i];
            }
        }
        return answer;
    }
}

 

<수정 후>

class Solution {
    public int[] solution(int[] num_list, int n) {
        int[] answer = new int[n]; 
        for(int i = 0; i < n; i++){
            answer[i] = num_list[i];
        }
        return answer;
    }
}

 

[반성할 점]

<수정 전>

  • answer 배열을 n만큼 정해주어야 n의 길이 만큼 배열에 요소가 담길 것이라고 생각하지 못했다.
  • i가 n보다 작은 것은 배열의 인덱스는 0부터 시작하니까 i가 n보다 작아야 한다.
  • i번째 요소를 answer의 i번째에 담아주면 n번째 원소까지 값이 들어갈 것이다.

<수정 후>

  • 수정 전 코드는 불필요한 코드가 있었다.
  • num_list의 첫번째 원소부터 n번째 원소까지 넣는 것이기 때문에
  • n번째까지 돌면서 num_list의 i번째를 answer의 i번째에 넣어주고
  • answer를 리턴해주면 되는 것인데 굳이 조건문을 사용하여 불필요한 코드를 작성했었다.
  • 조건을 잘 생각하며 차근 차근 풀기..!
728x90
728x90

[문제 설명]

정수 리스트 num_list와 찾으려는 정수 n이 주어질 때, num_list안에 n이 있으면 1을 없으면 0을 return하도록 solution 함수를 완성해주세요.

 

[입출력 예]

num_list n result
[1, 2, 3, 4, 5] 3 1
[15, 98, 23, 2, 15] 20 0

 

[차근 차근 생각해보기]

  1. num_list의 길이까지 돌면서
  2. num_list의 i번째 요소가 n과 같으면 1을 리턴해주고
  3. 그게 아니면 0을 리턴해준다.
  4.  

[결과]

class Solution {
    public int solution(int[] num_list, int n) {
        int answer = 0;
        for(int i = 0; i < num_list.length; i++){
            if(num_list[i] == n){
                return 1;
            }
        }
        return answer;
    }
}

 

[반성할 점]

  • 처음에 for문 안에 n이면 answer에 1을 넣어주고 아니면 0을 넣어주도록 코드를 작성했다.
  • 계속 오류가 나서 생각해보니 위와 같은 코드면 num_list가 끝날 때까지 answer의 값이 계속 바뀔 것이고
  • 만약 num_list의 마지막 요소가 n과 같으면 1이 리턴되겠지만
  • 마지막 요소가 n과 같지 않으면 0이 나올 것이기 때문에
  • n이 i번째의 요소와 같으면 바로 return 1을 해주는 것이 맞다고 생각하였다.
728x90
728x90

[문제 설명]

한 자리 정수로 이루어진 문자열 num_str이 주어질 때, 각 자리수의 합을 return하도록 solution 함수를 완성해주세요.

 

[입출력 예]

num_str result
"123456789" 45
"1000000" 1

 

[차근 차근 생각해보기]

  1. num_str을 한자리 씩 나눈 후
  2. String 배열에 담아준 다음
  3. str의 길이 만큼 돌면서
  4. str의 i번째 요소를 정수로 변환하여 answer에 더해준다.

[결과]

class Solution {
    public int solution(String num_str) {
        int answer = 0;
        
        String[] str = num_str.split("");

        for(int i = 0; i < str.length; i++){
            answer += Integer.parseInt(str[i]);
        }
        
        return answer;
    }
}

 

[반성할 점]

  • 처음에 split메소드로 나누어 주지 않고 num_str 길이까지 돌면서 charAt()으로 요소를 가져왔다.
  • 하지만 char 타입은 정수로 파싱이 되지 않아
  • split으로 나눈 다음 배열에 담아주고 i번째 요소를 정수로 변환하여 더해주는 방식을 택했다.
  • 찾아보니 charAt()으론 Character.getNumericValue() 메소드로 정수를 변환해 줄 수 있다고 한다.
    • 대신 주어진 문자가 0 ~ 9사이의 숫자인 경우에만 해당 숫자를 반환하고 그 외엔 -1을 반환한다.
728x90
728x90

[문제 설명]

정수 리스트 num_list가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return하도록 solution 함수를 완성해주세요. 음수가 없다면 -1을 return합니다.

 

[입출력 예]

num_list result
[12, 4, 15, 46, 38, -2, 15] 5
[13, 22, 53, 24, 15, 6] -1

 

[차근 차근 생각해보기]

  1.  num_list의 길이 만큼 돌면서
  2.  num_list의 i번째 요소가 음수이면
  3. 인덱스를 반환하고
  4.  음수가 없으면 -1을 반환하기

 

[결과]

class Solution {
    public int solution(int[] num_list) {
        int answer = -1;
        
        for(int i = 0; i < num_list.length; i++){
            if(num_list[i] < 0){
                return i;
            }
        }
        return answer;
    }
}

 

[반성할 점]

  • num_list의 i번째 요소가 음수이면 [answer = i] 를 해주었더니 테스트 통과가 되지 않았다.
  • 문제에서 '첫번째'로 나오는 음수의 인덱스를 return하도록 해주어라 라고 조건이 명시 되어 있었고
  • 나는 한 배열에서 음수가 여러개 나올 것이라는 것을 고려하지 못했다.
  • 앞으로는 문제 잘 읽고 조건 하나하나 생각해보기..

 

728x90

+ Recent posts