프로그래머스 문제풀이/알고리즘 (JAVA)

[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (89~94번 문제풀이)

남건욱 2023. 10. 4. 09:24

목차

    반응형
    89. 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++){
                String[] result = quiz[i].split(" ");
                
                int x = Integer.parseInt(result[0]);
                int y = Integer.parseInt(result[2]);
                int z = Integer.parseInt(result[4]);
                String op = result[1];
                
                int opInt;
                
                if(op.equals("+")){
                    opInt = x + y;
                } else {
                    opInt = x - y;
                }
                
                if(opInt == z){
                    answer[i] = "O";
                } else {
                    answer[i] = "X";
                }
            }
        
            return answer;
        }
    }

    <작성한 코드>

    quiz크기만큼 배열을 하나 생성했다. 그 뒤 배열길이만큼 for문을 반복해 줬고 result에 공백기준으로 잘라서 넣어줬다. 0번째엔 숫자, 1번째엔 기호, 2번째엔 숫자, 4번째엔 결괏값이 들어가 있을 것이다. 그래서 각각 저장해 준 뒤 1번째 값인 기호가 +이면 opInt에 더해주고 아니면 차를 구했다. 그 뒤 아래 fi문에서 값이 같으면 O를 대입, 다르면 X를 대입하고 반환했다.

     

     

     

     

    90. 문자열 안에 문자열

    문제

    class Solution {
        public int solution(String str1, String str2) {
            int answer = 0;
            
            if(str1.contains(str2)){
                answer = 1;
            }else {
                answer = 2;
            }
            
            return answer;
        }
    }

    <작성한 코드>

    contains을 써서 포함되는지 안되는지 확인한 뒤 포함되면 1, 포함되지 않으면 2를 넣고 반환했다.

     

     

     

    91. 제곱수 판별하기

    문제

    class Solution {
        public int solution(int n) {
            int answer = 2;
            
            for(int i=1; i<=1000; i++){
                if(i * i == n) answer = 1;
            }
            
            return answer;
        }
    }

    <작성한 코드>

    n의 범위는 1,000,000이라 했으니 i를 1000까지 설정해 줬다. 그 뒤 i*i가 n이 되면 제곱수이니 answer에 1을 대입, 아니라면 초기값 그대로 2를 반환해 줬다.

     

     

     

    92. 세균 증식

    문제

    class Solution {
        public int solution(int n, int t) {
            int answer = n;
            
            for(int i=0; i<t; i++){
                answer *= 2;
            }
            
            return answer;
        }
    }

    <작성한 코드>

    간단한 문제였다. t의 길이만큼 answer을 계속 2배씩 늘려주고 반환하였다.

     

     

     

    93. 문자열 정렬하기(2)

    문제

    import java.util.*;
    
    class Solution {
        public String solution(String my_string) {
            String result = "";
            
            for(int i=0; i<my_string.length(); i++){
                char ch = my_string.charAt(i);
                if(ch >= 'A' && ch <= 'Z') ch = (char)(ch + 32);
                result += ch;
            }
            
            char[] answer = result.toCharArray();
            Arrays.sort(answer);
    
            return new String(answer);
        }
    }

    <작성한 코드>

    for문으로 my_string의 길이만큼 반복해 줬다. char형 변수 ch에 각 원소들을 넣어주고 이 값이 대문자이면 소문자로 변경한 뒤에 result에 대입해 줬다. 반복문이 종료되면 정렬을 해야 되기 때문에 char형 배열 answer를 생성하고 result로 초기화해 줬다. 그 뒤 Arrays.sort()를 사용해서 오름차순으로 정렬한 뒤 String형으로 변경해서 반환하였다.

     

     

     

    94. 7의 개수

    문제

    class Solution {
        public int solution(int[] array) {
            int answer = 0;
            
            for(int i=0; i<array.length; i++){
                while(array[i] > 0){
                    if(array[i] % 10 == 7) answer++;
                    array[i] /= 10;
                }
            }
            
            return answer;
        }
    }

    <작성한 코드>

    배열의 길이만큼 for문을 사용했다. 안에서는 while문을 사용해서 0보다 작을 때까지 반복하고 array [i]에 담긴 값을 10으로 나눠서 나머지가 7일 때 answer++를 해줬다. 그 뒤 나누기 10을 해준 값을 다시 대입해 주고 answer값을 반환하였다.

    반응형
    프로필사진

    남건욱's 공부기록