코딩테스트

프로그래머스 코딩테스트(두 수의 연산값 비교하기, k의 개수, 특별한 이차원 배열 1)

SOME코딩 2023. 5. 18. 15:44

<두 수의 연산값 비교하기>

문제 설명
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.

12 ⊕ 3 = 123
3 ⊕ 12 = 312
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요.

단, a ⊕ b와 2 * a * b가 같으면 a ⊕ b를 return 합니다.

 

풀이

class Solution {
    public int solution(int a, int b) {
        return Integer.parseInt(""+a+b)>=2*a*b?Integer.parseInt(""+a+b):2*a*b;
    }
}

 

다른 사람 풀이

class Solution {
    public int solution(int a, int b) {
        return Math.max(Integer.parseInt(String.valueOf(a)+String.valueOf(b)),2*a*b);
    }
}

 

<k의 개수>

문제 설명
1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.

 

풀이

class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        for(int l=i;l<=j;l++){
            if((l+"").contains(k+"")){
                for(int m=0;m<(l+"").length();m++){
                    if((l+"").charAt(m) == k+'0')
                        answer++;
                }
            }
        }
        return answer;
    }
}

 

다른 사람 풀이

class Solution {
    public int solution(int i, int j, int k) {
        String str = "";
        for(int a = i; a <= j; a++) {
            str += a+"";
        }

        return str.length() - str.replace(k+"", "").length();
    }
}

 

<특별한 이차원 배열 1>

문제 설명
정수 n이 매개변수로 주어질 때, 다음과 같은 n × n 크기의 이차원 배열 arr를 return 하는 solution 함수를 작성해 주세요.

arr[i][j] (0 ≤ i, j < n)의 값은 i = j라면 1, 아니라면 0입니다.

 

풀이

class Solution {
    public int[][] solution(int n) {
        int[][] answer = new int[n][n];
        for(int i=0;i<n;i++){
            answer[i][i] = 1;
        }
        return answer;
    }
}