티스토리 뷰

1️⃣ 숫자 찾기

 

문제 설명

정수 num과 k가 매개변수로 주어질 때, num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return하고 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 0 < num < 1,000,000
  • 0 ≤ k < 10
  • num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 합니다.

입출력 예

num K result
29183 1 3
232443 4 4
123456 7 -1

 

입출력 예 #1

  • 29183에서 1은 3번째에 있습니다.

입출력 예 #2

  • 232443에서 4는 4번째에 처음 등장합니다.

입출력 예 #3

  • 123456에 7은 없으므로 -1을 return 합니다.

 

💻 나의 풀이

class Solution {
    public int solution(int num, int k) {
        int answer = 0;
        
        String s = Integer.toString(num);  // num을 문자열로
        String[] array = s.split("");
        
        for(int i=0; i<array.length; i++){
            if(array[i].equals(Integer.toString(k))){
                return i+1;
            }
        }
        return -1;
    }
}

 

비교해야되니까 정수 num을 문자열로 바꿔주고, split을 사용해 공백으로 구분해서 배열 array에 넣어줍니다.배열을 반복하면서 배열의 i번째가 정수 k를 문자열로 변환한 Integer.toString(k)와 같다면 i+1값을 반환해줍니다. (자리수이기 때문에 +1)만약 같은 값이 없을 경우 -1을 리턴합니다. 

 

 

🔎 다른 사람의 풀이

class Solution {
    public int solution(int num, int k) {
        return ("-" + num).indexOf(String.valueOf(k));
    }
}

 

- 라는 문자를 하나 추가해서 인덱스를 0이 아닌 1부터 세는 방법입니다.놀랍습니다...🤦‍♀️

 


 

2️⃣ n의 배수 고르기

 

문제 설명

정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ n ≤ 10,000
  • 1 ≤ numlist의 크기 ≤ 100
  • 1 ≤ numlist의 원소 ≤ 100,000

입출력 예

n numlist result
3 [4, 5, 6, 7, 8, 9, 10, 11, 12] [6, 9, 12]
5 [1, 9, 3, 10, 13, 5] [10, 5]
12 [2, 100, 120, 600, 12, 12] [120, 600, 12, 12]

 

입출력 예 #1

  • numlist에서 3의 배수만을 남긴 [6, 9, 12]를 return합니다.

입출력 예 #2

  • numlist에서 5의 배수만을 남긴 [10, 5]를 return합니다.

입출력 예 #3

  • numlist에서 12의 배수만을 남긴 [120, 600, 12, 12]를 return합니다.

 

💻 나의 풀이

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

 

 


 

3️⃣ 자릿수 더하기

 

문제 설명

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 0 n 1,000,000

입출력 예

n result
1234 10
930211 16

 

입출력 예 #1

  • 1 + 2 + 3 + 4 = 10을 return합니다.

입출력 예 #2

  • 9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.

 

💻 나의 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        String s = Integer.toString(n);
        String[] array = s.split("");
        
        for(int i=0; i<array.length; i++){
            answer += Integer.parseInt(array[i]);
        }
        return answer;
    }
}

 

숫자를 문자열로 바꿔준 후에 문자열 배열 array로 만들어줍니다.

배열 array 길이만큼 반복문을 돌면서 array[i]를 정수형으로 바꾸어서 answer에 더해줍니다.

 

 

🔎 다른 사람의 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;

        while(n>0){
            answer+=n%10;
            n/=10;
        }

        return answer;
    }
}

 


 

4️⃣ OX퀴즈

 

문제 설명

덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
  • 1 ≤ quiz의 길이 ≤ 10
  • X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
  • X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
  • -10,000 ≤ X, Y ≤ 10,000
  • -20,000 ≤ Z ≤ 20,000
  • [연산자]는 + 와 - 중 하나입니다.

입출력 예

quiz result
["3 - 4 = -3", "5 + 6 = 11"] ["X", "O"]
["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"] ["O", "O", "X", "O"]

 

입출력 예 #1

  • 3 - 4 = -3 은 틀린 수식이므로 "X", 5 + 6 = 11 은 옳은 수식이므로 "O" 입니다. 따라서 ["X", "O"]를 return합니다.

입출력 예 #2

  • 19 - 6 = 13 은 옳은 수식이므로 "O", 5 + 66 = 71 은 옳은 수식이므로 "O", 5 - 15 = 63 은 틀린 수식이므로 "X", 3 - 1 = 2는 옳은 수식이므로 "O" 따라서 ["O", "O", "X", "O"]를 return합니다.

💻 나의 풀이

class Solution {
    public String[] solution(String[] quiz) {
        String[] answer = new String[quiz.length];
        for (int i = 0; i < quiz.length; i++) {
            String[] s = quiz[i].split(" ");
            int cal = 0;
            if (s[1].equals("+")) {
                cal = Integer.parseInt(s[0]) + Integer.parseInt(s[2]);
                if (cal == Integer.parseInt(s[4])) {
                    answer[i] = "O";
                } else {
                    answer[i] = "X";
                }
            } else if (s[1].equals("-")) {
                cal = Integer.parseInt(s[0]) - Integer.parseInt(s[2]);
                if (cal == Integer.parseInt(s[4])) {
                    answer[i] = "O";
                } else {
                    answer[i] = "X";
                }
            }
        }
        return answer;
    }
}

 

answer 배열의 크기를 quiz의 길이로 지정해줍니다.

quiz의 길이만큼 순회하면서

배열s는 공백으로 구분한 quiz의 i번째 값들을 원소로 갖습니다.

cal는 계산한 값을 담을 변수 입니다.

 

s의 1번 인덱스 = 연산자가 + 인지 -인지 확인하며

s의 0번 인덱스 값과 2번 인덱스 값을 더하거나 빼줍니다. ( 이때 parseInt를 사용해서 문자를 정수형으로 바꿔줍니다.)

 

코드가 굉장히 복잡해보여서 더 좋은 방법이 분명 있을거 같습니다.

 

 

 

🔎 다른 사람의 풀이

class Solution {
    public String[] solution(String[] quiz) {
        for(int i=0; i<quiz.length; i++){
            String[] text = quiz[i].split(" ");
            int result = Integer.parseInt(text[0]) + ( Integer.parseInt(text[2]) * ( text[1].equals("+") ? 1:-1) );
            quiz[i] = result == Integer.parseInt(text[4])? "O": "X";
        }
        return quiz;
    }
}

 

바로 이렇게 말이죠...

공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함