프로그래머스 문제풀이/알고리즘 (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 공부기록