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

hybiis·2023년 2월 5일
0

프로그래머스 - JAVA

목록 보기
7/19


📖Q1. 진료순서 정하기

외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.

✍A1.

class Solution {
    public int[] solution(int[] emergency) {
        int[] answer = new int[emergency.length];

        for(int i=0;i<emergency.length;i++){
            int count=1; //for문 돌때마다 count를 1로 초기화 
            for(int j=0;j<emergency.length;j++){
                if(emergency[j]>emergency[i]){ //배열 요소들 비교
                    count++;
                }                 
            }
            answer[i]+=count; //순위 출력
        }
        return answer;
    }
}

📖Q2. 한 번만 등자한 문자

문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.

✍A2.

  class Solution {
    public String solution(String s) {
        int[] alpha = new int[26];
            for(char c : s.toCharArray()){
                alpha[c - 'a']++; //a-z빼기
            }

            StringBuilder answer = new StringBuilder();
            //StringBuilder객체 생성 후 .append를 이용하여 문자연결
            for(int i = 0; i < 26; i++){
                if(alpha[i] == 1){
                    answer.append((char)(i + 'a'));
                }
            }
        return answer.toString();
    }
}

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

문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

✍A3.

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        String[] str = my_string.split("[a-zA-Z]"); //.split()을 이용하여 a-Z삭제 후 남은 숫자 str배열에 집어넣기
        for(int i = 0 ; i < str.length;i++){
            if(str[i].length() > 0) //값의 길이가 0보다 커야함
                answer+=Integer.parseInt(str[i]); //int형으로 변환 후 더해줌
        }
        return answer;
    }
}

📖Q4. 이진수 더하기

이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.

✍A4.

class Solution {
    public String solution(String bin1, String bin2) {
        return Integer.toString(Integer.parseInt(bin1, 2) + Integer.parseInt(bin2, 2),2);
        //integer.parseInt(,2)를 이용해 2->10진수 변환, Integer.toString(,2)을 이용해 10->2진수 변환
    }
}

📖Q5. 7의 개수

이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.

✍A5. 더러운 나의 풀이....

import java.util.*;
class Solution {
    public int solution(int[] array) {
        int answer = 0;
        String num=Arrays.toString(array); //int->String으로 변환
        char [] num2=num.toCharArray();//문자열을 한개씩 쪼개기
        
        for(int i=0; i<num2.length;i++){
            if(num2[i]=='7'){
                answer++; //7이 발견되면 answer 증가
            }
        }
        return answer;
    }
}

✍A5-1. 똑똑이들 풀이

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

📖Q6. 잘라서 배열로 저장하기

문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.

✍A6.

class Solution {
    public String[] solution(String my_str, int n) {
        int r=(my_str.length()+n-1)/n;      
        String[] answer = new String[r];
        
        for(int i=0; i<r;i++){
            int start=i*n;
            int end=start+n>=my_str.length()?my_str.length():start+n;
            answer[i]=my_str.substring(start,end);
        }       
        return answer;
    }
}

📖Q7. 문자열 계산하기

my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.

✍A7.

import java.util.*;
class Solution {
    public int solution(String my_string) {
        int answer=0;
        String[] r=my_string.split(" ");
        answer = Integer.parseInt(r[0]);; //첫번째 값 저장
        
        for(int i=1;i<r.length;i++){
            if(i%2!=0){
                if(r[i].equals("+")){
                    answer+=Integer.parseInt(r[i+1]);
                }
                else{
                    answer-=Integer.parseInt(r[i+1]);
                }
            }
        }
        return answer;
    }
}

📖Q8. 컨트롤 제트

숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.

✍A8.

import java.util.*;
class Solution {
    public int solution(String s) {
        String[] re = s.split(" ");
        int answer = 0;
        
        for(int i=0;i<re.length;i++){
            if(re[i].equals("Z")){ //소문자 z인 줄 알고 10분간 뻘짓했다..다들 착각하지 말기^_ㅠ                         
                re[i]="0"; 
                re[i-1]="0"; //Z와 이전 문자를 0으로 변경해서 배열에 넣어줌
            } 
        }
        
        for(int i=0;i<re.length;i++){
            answer+=Integer.parseInt(re[i]);//int형으로 변환하여 모두 더해줌
        }       
        return answer;
    }
}

📖Q9. 외계어 사전

PROGRAMMERS-962 행성에 불시착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열 spell과 외계어 사전 dic이 매개변수로 주어집니다. spell에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요.

✍A9.

class Solution {
    public int solution(String[] spell, String[] dic) {
        int answer = 2;
        
        for(String dics:dic){
            boolean a=true;
            for(String spells:spell){
                if(dics.indexOf(spells)==-1){ //dics 내에 같은 문자를 찾지 못했을 경우 indexOf()를 사용해 -1을 반환
                    a=false;
                    break;
                }
            }
            if(a){
            	answer=1;
             }
        }      
        return answer;
    }
}

📖Q10. 삼각형의 완성조건(2)

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.

✍A10.

class Solution {
    public int solution(int[] sides) {
        int answer = 0;
        int max=Math.max(sides[0],sides[1]);
        int min=Math.min(sides[0],sides[1]);
        
        for(int i=0;i<max;i++){ //가장 긴 변이 max인 경우
            if(min+i>max) //나머지 한 변과 min의 합은 max보다 커야함
                answer++;
            }   
        for(int i=max;i<sides[0]+sides[1];i++){ //나머지 한변이 가장 긴 변인 경우
             answer++;
            }           
      
        
        return answer;
    }
}
profile
초보 개발자

0개의 댓글