티스토리 뷰

1️⃣ 7의 개수

 

문제 설명

머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array의 원소 ≤ 100,000

입출력 예

array result
[7, 77, 17] 4
[10, 29] 0

 

입출력 예 #1

  • [7, 77, 17]에는 7이 4개 있으므로 4를 return 합니다.

입출력 예 #2

  • [10, 29]에는 7이 없으므로 0을 return 합니다.

 

💻 나의 풀이

import java.util.Arrays;

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        
        String s = Arrays.toString(array);
        String[] str = s.split("");
        
        for(int i=0; i<str.length; i++){
            if(str[i].equals("7")){
                answer++;
            }
        }
        return answer;
    }
}

 

처음엔 그냥 바로 array 배열을 순회하면서 7을 찾아보자 라고 생각했었는데 그럼 17 같은 경우는 7로 인식을 못하게 되니까 

일단 정수 배열 array를  toString을 통해 문자열 s로 변환시킨 후, split을 통해 s로 문자열 배열 str를 만들어줬습니다.

그 후 순회를 하면서 str의 원소가  7과 같을 때 answer를 증가시켜 해결해줍니다.

 

 

🔎 다른 사람의 풀이

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        for(int a : array){
            while(a != 0){
                if(a % 10 == 7){
                    answer++;
                }
                a /= 10;
            }
        }
        return answer;
    }
}

 

각 숫자를 10으로 나누어가면서 나머지가 7인 경우를 찾아 카운트하는 방식입니다.

 

 


 

2️⃣ 잘라서 배열로 저장하기

 

문제 설명

문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ my_str의 길이 ≤ 100
  • 1 ≤ n ≤ my_str의 길이
  • my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.

입출력 예

my_str n result
"abc1Addfggg4556b" 6 ["abc1Ad", "dfggg4", "556b"]
"abcdef123" 3 ["abc", "def", "123"]

 

입출력 예 #1

  • "abc1Addfggg4556b" 를 길이 6씩 잘라 배열에 저장한 ["abc1Ad", "dfggg4", "556b"]를 return해야 합니다.

입출력 예 #2

  • "abcdef123" 를 길이 3씩 잘라 배열에 저장한 ["abc", "def", "123"]를 return해야 합니다.

 

🔎 다른 사람의 풀이

class Solution {
    public String[] solution(String my_str, int n) {
        int size = (int)Math.ceil((double)my_str.length() / n);
        String[] answer = new String[size];
        int index = 0;
        for (int i = 0; i < my_str.length(); i += n) {
            int endIndex = Math.min(i + n, my_str.length());
            answer[index++] = my_str.substring(i, endIndex);
        }
        return answer;
    }
}

 

문제 보고 되게 쉽게 생각했었는데 생각처럼 안 풀리더라구요...

day19에서 어렵다면 가장 어려운 문제였습니다.

  1. size 변수를 통해 반환될 배열의 크기를 계산합니다.
  2. answer 배열을 선언하고, 반복문을 통해 각 부분 문자열을 생성하여 저장합니다.
  3. 부분 문자열은 substring 메서드를 사용하여 생성하며, 시작 인덱스 i부터 i + n까지의 부분 문자열이 됩니다.
  4. 마지막 부분에서는 문자열의 길이가 n의 배수가 아닌 경우를 고려하여 나머지 부분을 포함하도록 합니다.
class Solution {
    public String[] solution(String my_str, int n) {
        int resultCnt = (my_str.length() + n - 1) / n;
        String[] answer = new String[resultCnt];

        for (int i = 0; i < resultCnt; i++) {
            int start = n * i;
            int end = start + n >= my_str.length()? my_str.length(): start + n;
            answer[i] = my_str.substring(start, end);
        }

        return answer;
    }
}

 

  1. resultCnt 변수를 통해 반환될 배열의 크기를 계산합니다. (my_str.length() + n - 1) / n은 올림 연산을 사용하여 부분 문자열의 개수를 계산하고, 이를 resultCnt에 저장합니다.
  2. answer 배열을 선언하고, 반복문을 통해 각 부분 문자열을 생성하여 저장합니다.
  3. 각 부분 문자열의 시작 인덱스 start는 n * i로 계산되고, 종료 인덱스 end는 start + n이 문자열의 길이를 초과하는 경우 my_str.length()로 설정됩니다.
  4. substring 메서드를 사용하여 부분 문자열을 생성하고, 이를 answer 배열에 저장합니다.

 


 

3️⃣ 중복된 숫자 개수

 

문제 설명

정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요

 

제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array의 원소 ≤ 1,000
  • 0 ≤ n ≤ 1,000

입출력 예

array n result
[1, 1, 2, 3, 4, 5] 1 2
[0, 2, 3, 4] 1 0

 

입출력 예 #1

  • [1, 1, 2, 3, 4, 5] 에는 1이 2개 있습니다.

입출력 예 #2

  • [0, 2, 3, 4] 에는 1이 0개 있습니다.

 

💻 나의 풀이

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

 

인덱스를 활용하여 배열을 순회하면서 i번째 원소가 n과 같을 때 answer를 1씩 더 해줍니다.

 

 

🔎 다른 사람의 풀이

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        for (int num : array) {
            if (num == n) answer++;
        }
        return answer;
    }
}

 

 


 

4️⃣ 머쓱이보다 키 큰 사람

 

문제 설명

머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 1 ≤ height ≤ 200
  • 1 ≤ array의 원소 ≤ 200

입출력 예

array height result
[149, 180, 192, 170] 167 3
[180, 120, 140] 190 0

 

입출력 예 #1

  • 149, 180, 192, 170 중 머쓱이보다 키가 큰 사람은 180, 192, 170으로 세 명입니다.

입출력 예 #2

  • 180, 120, 140 중 190보다 큰 수는 없으므로 0명입니다.

💻 나의 풀이

class Solution {
    public int solution(int[] array, int height) {
        int answer = 0;
        for(int num : array) {
            if(num > height) answer++;
        }
        return answer;
    }
}

 

처음엔 for문으로 풀었다가 foreach문으로 변경해봤습니다. ㅎㅎ

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함