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

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

남건욱 2023. 10. 9. 12:57
반응형
108. 그림 확대

문제

class Solution {
    public String[] solution(String[] picture, int k) {
        int height = picture.length;
        int width = picture[0].length();
        
        int plusHeight = height * k;
        int plusWidht = width * k;
        
        String[] answer = new String[plusHeight];
        
        for(int i=0; i<plusHeight; i++){
            int row = i / k;
            String result = "";
            
            for(int j=0; j<plusWidht; j++){
                int col = j / k;
                char ch = picture[row].charAt(col);
                result += ch;
            }
            
            answer[i] = result;
        }
        
        
        return answer;
    }
}

<작성한 코드>

기본 높이와 너비는 picture의 길이, 배열하나의 길이만큼이니 먼저 선언했다. 그 뒤 확장된 가로 세로의 길이는 기존 길이에서 * k를 해주면 된다. 후 정답이 될 answer배열의 크기는 확장된 높이의 길이만큼 선언했다. for문안에서는 먼저 int row에 i/k를 해줬다. 이유는 0부터 plusHeight까지 반복할 건데, k가 5일 때로 예를 들면 0/5 = 0, 1/5 = 0, 2/5 = 0, 3/5 = 0, 4/5 = 0, 5/5 = 1 이런 식으로 넣어야 할 개수만큼 넣도록 정수를 선언할 수 있기 때문이다. 내부의 for문에서는 같은 방법으로 열의 길이를 설정해 주고, 문자형 변수 ch안에 picture의 행번호에서 몇 번째 문자값을 가져올지 선언해 주고 result에 담아줬다. 담아준 result는 반복문이 한번 끝날 때마다 answer [i]에 넣어줬다.

 

 

 

109. 커피 심부름

문제

class Solution {
    public int solution(String[] order) {
        int answer = 0;
        
        for(int i=0; i<order.length; i++){
            if(order[i].contains("americano") || order[i].equals("anything")) answer += 4500;
            if(order[i].contains("cafelatte")) answer += 5000;
        }
        
        return answer;
    }
}

<작성한 코드>

간단한 문제다. 각 order의 배열 안에 americano, cafelatte가 있는지 체크 후 존재하면 맞는 금액을 더해줬다. anything일 경우에도 아메리카노와 같은 가격을 더해줘야 하기 때문에 아메리카노 부분에 or문으로 넣어주고 반환했다.

 

 

 

110. 날짜 비교하기

문제

class Solution {
    public int solution(int[] date1, int[] date2) {
        int answer = 0;
        
        for(int i=0; i<date1.length; i++){
            if(date1[i] < date2[i]) return 1;
            if(date1[i] > date2[i]) return 0;
        }
        
        return answer;
    }
}

<작성한 코드>

각각의 원소를 비교했다. 기본값을 0으로 두고 만약 date1의 연도값이 더 작으면 1을 리턴하고 크면 0을 리턴했다. 여기서 걸리지 않으면(값이 같으면) 기본값인 0으로 지속될 것이다. 그 후 월과 일도 차례로 비교하고 아무것도 걸리지 않으면 answer에 0이 담긴 채로 그대로 반환되게 해 줬다.

 

 

 

111. 주사위 게임 1

문제

class Solution {
    public int solution(int a, int b) {
        int answer = 0;
        
        if(a%2 == 1 && b%2 == 1) answer += (a*a) + (b*b);
        if((a%2 == 1 && b%2 == 0) || (a%2 == 0 && b%2 == 1)) answer += 2 * (a+b);
        if(a%2 == 0 && b%2 == 0) answer += Math.abs(a-b);
        
        return answer;
    }
}

<작성한 코드>

각 조건에 맞게 if문을 걸어주고 값을 맞게 반환했다. 절댓값을 구할때는 Math.abs를 사용해서 a-b의 절댓값을 대입해 줬다.

 

 

 

112. 정수 찾기

문제

class Solution {
    public int solution(int[] num_list, int n) {
        int answer = 0;
        
        for(int i=0 ;i<num_list.length; i++){
            if(num_list[i] == n) answer = 1;
        }
        
        return answer;
    }
}

<작성한 코드>

간단한 문제였다. num_list의 길이만큼 반복해 주고 각 원소의 값이 n과 일치하면 answer에 1을 넣어줬다.

 

 

 

113. 꼬리 문자열

문제

class Solution {
    public String solution(String[] str_list, String ex) {
        String answer = "";
        
        for(int i=0; i<str_list.length; i++){
            if(str_list[i].contains(ex)) continue;
            answer += str_list[i];
        }
        
        return answer;
    }
}

<작성한 코드>

str_list의 길이만큼 반복문을 돌려줬다. 내부에서는 str_list내부에 ex를 포함하고 있으면 continue 시켜줬고, 여기에 걸리지 않으면 answer에 str_list의 값을 추가해 줬다.

 

 

 

114. 부분 문자열

문제

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

<작성한 코드>

매우 간단한 문제다. str2안에 str1이 포함되어 있는지 비교만 해주면 된다. contains를 사용했다.

 

 

 

115. 부분 문자열인지 확인하기

문제

class Solution {
    public int solution(String my_string, String target) {
        int answer = 0;
        
        if(my_string.contains(target)) answer = 1;
        
        return answer;
    }
}

<작성한 코드>

바로 위의 부분 문자열문제와 동일한 문제였다. contains으로 내부값을 비교해 줬다.

반응형
프로필사진

남건욱's 공부기록