프로그래머스 코딩테스트(두 수의 연산값 비교하기, k의 개수, 특별한 이차원 배열 1)
<두 수의 연산값 비교하기>
문제 설명
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
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;
}
}