31. 수박수박수박수박수박수?
class Solution {
public String solution(int n) {
String answer = "";
if (n % 2 == 0) {
for (int i = 1; i <= n / 2; i++) {
answer = answer + "수박";
}
} else if(n == 1) {
answer = "수";
} else {
for (int i = 0; i < n / 2; i++) {
answer = answer + "수박";
}
answer = answer + "수";
}
return answer;
}
}
32. 내적
class Solution {
public int solution(int[] a, int[] b) {
int answer = 0;
for (int i = 0; i < a.length; i++) {
answer += a[i] * b[i];
}
return answer;
}
}
33. 약수의 개수와 덧셈
class Solution {
public int solution(int left, int right) {
int answer = 0;
// left와 right 사이의 수들의 약수 구하기
for (int i = left; i <= right; i++) {
int count = 0;
for (int j = 1; j * j <= i; j++) {
if (j * j == i) count++;
else if (i % j == 0) count+=2;
}
if (count % 2 == 0) {
answer += i;
} else {
answer -= i;
}
}
return answer;
}
}
소인수분해 알고리즘
https://devmoony.tistory.com/169
[Java] 약수의 개수 구하는 최적의 방법(알고리즘)
Java - 약수의 개수 구하기 (최적의 방법) 최근에 코딩테스트 문제를 풀다가 약수의 개수 관련해서 로직을 작성한 기억이 많다. 그러다 기본적인 방법 외에 조금 더 효율적으로 약수의 개수를 구
devmoony.tistory.com
34. 문자열 내림차순으로 배치하기
import java.util.Arrays;
class Solution {
public String solution(String s) {
char[] charText = s.toCharArray();
char[] charAnswer = new char[charText.length];
// 오름차순 정렬
Arrays.sort(charText);
// 내림차순 정렬
for (int i = 0, j = charText.length - 1; i < charText.length && j >= 0; i++, j--) {
charAnswer[i] = charText[j];
}
String answer = new String(charAnswer);
return answer;
}
}
35. 부족한 금액 계산하기
class Solution {
public long solution(int price, int money, int count) {
long sum = 0;
for (int i = 1; i <= count; i++) {
sum += (price * i);
}
if (sum > money) {
long answer = sum - money;
return answer;
} else {
return 0;
}
}
}
36. 문자열 다루기 기본
class Solution {
public boolean solution(String s) {
boolean answer = true;
char[] sToChar = s.toCharArray();
if (s.length() == 4 || s.length() == 6) {
for (int num : sToChar) {
if (num >= 48 && num <= 57) {
answer = true;
} else {
answer = false;
break;
}
}
} else {
answer = false;
}
return answer;
}
}
37. 행렬의 덧셈
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr1[1].length];
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1[i].length; j++) {
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
}
38. 직사각형 별찍기
import java.util.Scanner;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
for (int i = 0; i < b; i++) {
for (int j = 0; j < a; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
39. 최대공약수와 최소공배수
class Solution {
public int[] solution(int n, int m) {
int gcd = getGCD(n, m); // 최대공약수
int lcm = (n * m) / gcd; // 최소공배수
int[] answer = {gcd, lcm};
return answer;
}
public static int getGCD(int num1, int num2) {
if (num1 % num2 == 0) {
return num2;
}
return getGCD(num2, num1 % num2);
}
}
https://programmer-chocho.tistory.com/9
[JAVA] 최대 공약수(GCD), 최소 공배수(LCM) 구하기
최대 공약수 구하는 방법 1. 숫자가 2개인 경우 1) 두 수를 공약수로 계속 나눈다. 2) 공약수로 나눈 몫이 서로소가 되면 stop 3) 왼쪽 공약수를 모두 곱한다. ∴ 60 과 48의 최대 공약수 : 2 ✕ 2 ✕ 3 = 1
programmer-chocho.tistory.com
40. 3진법 뒤집기
import java.util.ArrayList;
class Solution {
public int solution(int n) {
int answer = 0;
ArrayList<Integer> arrayList = new ArrayList<>();
// 3진법으로 변환
while (n >= 3) {
arrayList.add(n % 3);
n /= 3;
}
arrayList.add(n);
// 10진법으로 변환
for (int i = 0; i < arrayList.size(); i++) {
answer += (int) (arrayList.get(i) * Math.pow(3, arrayList.size() - (i + 1)));
}
return answer;
}
}
'코딩테스트 > 알고리즘 코드카타' 카테고리의 다른 글
알고리즘 코드카타 41~50 (0) | 2024.10.10 |
---|---|
알고리즘 코드카타 21~30 (0) | 2024.09.02 |
알고리즘 코드카타 11~20 (1) | 2024.08.19 |
알고리즘 코드카타 1~10 (1) | 2024.08.16 |