programmers Day17

Hwani·2024년 5월 23일

프로그래머스 DAY 1~25

목록 보기
17/51

문제 - 숫자 찾기

풀이

class Solution {
    public int solution(int num, int k) {
        int answer = 1;

        String numStr = String.valueOf(num);

        for (int i = 0; i < numStr.length(); i++) {
            // 각 자릿수를 문자로 변환하여 확인
            int digit = Character.getNumericValue(numStr.charAt(i));
            if (digit == k) {
                answer = i + 1; 
                break;
            } else {
                answer = -1;
            }
        }

        return answer;
    }

}

설명

  • int num을 String으로 변환
  • String을 char로 변환하여 하나씩 k랑 비교 후 answer에 추가 후 리턴한다.

문제 - n의 배수 고르기

풀이

import java.util.*;

class Solution {
    public int[] solution(int n, int[] numlist) {
         // n의 배수가 아닌 수들은 가변적이기 때문에 ArrayList 생성
        ArrayList<Integer> answerList = new ArrayList<>();

        // numlist[i]를 n 으로 나누어 0이라면 배수이기 때문에 answerList에 추가
        for (int i = 0; i < numlist.length; i++) {
            if (numlist[i] % n == 0) {
                answerList.add(numlist[i]);
            }
        }

        // ArrayList를 int 배열로 변환
        int[] answer = new int[answerList.size()];
        for (int i = 0; i < answerList.size(); i++) {
            answer[i] = answerList.get(i);
        }

        return answer;
    }
}

설명

  • n의 배수가 아닌 수들은 가변적이기 때문에 ArrayList 생성
  • numlist[i]를 n 으로 나누어 0이라면 배수이기 때문에 answerList에 추가
  • int[]로 리턴해야해서 answerList를 int[]에 추가하고 리턴한다.

문제 - 자릿수 더하기

풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        // n 매개변수를 배열에 담아 주기위해 String으로 전환 후 배열로 담아 split한다.
        String str = Integer.toString(n);
        String[] arr = str.split("");

        // split한 숫자를 각각 더해서 answer에 추가
        for(int i = 0; i < arr.length; i++) {
            answer += Integer.parseInt(arr[i]);
        }
        return answer;
    }
}

설명

  • n 매개변수를 배열에 담아 주기위해 String으로 전환 후 배열로 담아 split한다.
  • split한 숫자를 각각 더해서 answer에 추가하여 리턴한다.

문제 - OX 퀴즈

풀이

import java.util.*;

class Solution {
    public String[] solution(String[] quiz) {
        // 정답 리턴할 배열 생성
        String[] answer = new String[quiz.length];
            
        for (int i = 0; i < quiz.length; i++) {
            // quiz를 하나의 식으로 나누어 배열에 저장
            String[] s = quiz[i].split(" ");
            System.out.println("s = " + Arrays.toString(s));
            
            // 식의 1번 인덱스가 +일 경우
            if (s[1].equals("+")) {
                // 식의 0,2,4 번째 인덱스는 숫자이기 때문에 + 한 값이 올바른 경우
                if (Integer.parseInt(s[0]) + Integer.parseInt(s[2]) == Integer.parseInt(s[4])) {
                    answer[i] = "O";
                } else {
                    answer[i] = "X";
                }
            }
            
            // 식의 1번 인덱스가 -일 경우
            if (s[1].equals("-")) {
                // 식의 0,2,4 번째 인덱스는 숫자이기 때문에 - 한 값이 올바른 경우
                if (Integer.parseInt(s[0]) - Integer.parseInt(s[2]) == Integer.parseInt(s[4])) {
                    answer[i] = "O";
                } else {
                    answer[i] = "X";
                }
            }
        }

        System.out.println("answer = " + Arrays.toString(answer));
        return answer;

    }
    
}

설명

  • 배열에 담긴 quiz를 새로운 배열에 split해서 추가한다.
  • 인덱스 번호에 따른 조건문으로 1번 인덱스엔 부호가 오기 때문에 +,- 조건으로 나눈다.
  • 나눈 조건의 식이 올바르다면 정답을 리턴할 배열에 O를 추가, 아니라면 X를 추가하여 리턴한다.
profile
개발자될거야

0개의 댓글