[프로그래머스 LV.0] - JAVA[3]

hybiis·2023년 1월 26일
0

프로그래머스 - JAVA

목록 보기
4/19


📖Q1. 개미군단

개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.

✍A1.

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

            if(hp%5==0){ // 나머지가 없을때
                answer=hp/5;
            }
            else if(hp%5>0){ //나머지가 있을때
                answer=hp/5+hp%5/3+hp%5%3;
            }
        
        return answer;
    }
}

✍A1-1.


class Solution {
    public int solution(int hp) {
        return hp / 5 + (hp % 5 / 3) + hp % 5 % 3; //한 줄로 끝낼 수 있었다...
    }
}

📖Q2. 모음제거

영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

✍A2.

class Solution {
    public String solution(String my_string) {
        
        return my_string.replaceAll("[aeiou]",""); 
        //여러 문자를 제거해야할때는 .replaceAll("[제거할 문자들]","대체할 문자");
    }
}

📖Q3. 숨어있는 숫자의 덧셈(1)

문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

✍A3.

import java.util.regex.Pattern;
class Solution {
    public int solution(String my_string) {
        int answer=0;
        for(int i=0; i<my_string.length(); i++) {
            if(Pattern.matches("^[0-9]*", my_string.substring(i, i+1))) {  
                answer+=Integer.parseInt(my_string.substring(i, i+1));   
                // Pattern.matches 정규표현식을 이용해 자연수^[0-9]* 찾기
                //.substeing(시작점,끝나는 점)을 이용해 문자열 자르기
                //Integer.parseInt을 이용해 String->Int로 변환
            }
        }
        
        return answer;
    }
}

📖Q4. 세균증식

어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.

✍A4.

class Solution {
    public int solution(int n, int t) {
        int answer = (int)Math.pow(2,t); 
        return n*answer;
        
        //Math.pow()를 이용하여 거듭제곱을 해줌
        **주의 Math.pow는 double형이므로 꼭 (int)를 적어 정수형으로 변환해 주어야함.**
    }
}

✍A4-1. for문 이용

class Solution {
    public int solution(int n, int t) {

        for(int i = 0; i < t; i++) {
            n *= 2;
        }
        return n;
    }
}

📖Q5. 대문자와 소문자

문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

✍A5. 아스키코드 사용

class Solution {
    public String solution(String my_string) {
        String answer = "";
        for (int i = 0; i < my_string.length(); i++) {
            int x = my_string.charAt(i); 
            if (x <= 90) { //대문자일시
                answer += (char) (x + 32); //대문자와 소문자 차이는 32이므로 x값에 +-32 해준다.
            } else { //소문자일시
                answer += (char) (x - 32);
            }
        }
        return answer;
    }
}

✍A5-1. Character.isUpper/isLowerCase() 사용

class Solution {
    public String solution(String my_string) {
        String answer = "";
        
        for(int i = 0; i < my_string.length(); i++){
            if(Character.isUpperCase(my_string.charAt(i))){//대문자
                answer += Character.toLowerCase(my_string.charAt(i));
            }
            else if(Character.isLowerCase(my_string.charAt(i))){//소문자
                answer += Character.toUpperCase(my_string.charAt(i));
                
                **추가적으로 Character.isDigit()는 숫자를 구별해줌**
            }
        }
        return answer;
    }
}

📖Q6. 암호해독

군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.
암호화된 문자열 cipher를 주고받습니다.
그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.
문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.

✍A6.

class Solution {
    public String solution(String cipher, int code) {
        String answer = "";
        
        for(int i=code-1; i<cipher.length(); i+=code){
            answer += cipher.substring(i, i+1);
        }
        return answer;
    }
}

✍A6-1.

class Solution {
    public String solution(String cipher, int code) {
        String answer = "";
        String[] s =cipher.split("");
        
        for(int i=0;i<s.length;i++){
            if((i+1)%code==0){
                answer+=s[i];
            }    
        }
        return answer;
    }
}
profile
초보 개발자

0개의 댓글