코딩테스트 연습 > 코딩 기초 트레이닝 > 문자열 섞기
문제 설명
길이가 같은 두 문자열 str1과 str2가 주어집니다.
두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.
제한사항
1 ≤ str1의 길이 = str2의 길이 ≤ 10
str1과 str2는 알파벳 소문자로 이루어진 문자열입니다.
입출력 예
str1 str2 result
"aaaaa" "bbbbb" "ababababab"
class Solution {
public String solution(String str1, String str2) {
StringBuilder answer = new StringBuilder();
for (int i = 0; i < str1.length(); i++) {
answer.append(str1.charAt(i));
answer.append(str2.charAt(i));
}
return answer.toString();
}
}
코딩테스트 연습 > 코딩테스트 입문 > 분수의 덧셈
문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
0 <numer1, denom1, numer2, denom2 < 1,000
입출력 예
numer1 denom1 numer2 denom2 result
1 2 3 4 [5, 4]
9 2 1 3 [29, 6]
입출력 예 설명
입출력 예 #1
1 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.
입출력 예 #2
9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.
class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
int[] answer = {(numer1 * denom2) + (numer2 * denom1), denom1 * denom2};
int min = Math.min(answer[0], answer[1]);
for (int i = 2; i <= min; i++) {
if (answer[0] % i == 0 && answer[1] % i == 0) {
answer[0] /= i;
answer[1] /= i;
}
}
return answer;
}
}
계속 이렇게나와서ㅠ
지피티한테 물어봣다ㅜ
class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
int commonDenom = denom1 * denom2; // 공통 분모 계산
int newNumer = numer1 * denom2 + numer2 * denom1; // 새 분자 계산
int gcd = findGCD(newNumer, commonDenom); // 최대공약수 계산
// 기약 분수로 만들기
newNumer /= gcd;
commonDenom /= gcd;
int[] answer = {newNumer, commonDenom};
return answer;
}
// 최대공약수 계산 메서드
private int findGCD(int a, int b) {
if (b == 0) {
return a;
}
return findGCD(b, a % b);
}
}
제법이다 너 ,,,,,ㅎ
코딩테스트 연습 > 코딩테스트 입문 > 중앙값 구하기
문제 설명
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
제한사항
array의 길이는 홀수입니다.
0 < array의 길이 < 100
-1,000 < array의 원소 < 1,000
입출력 예
array result
[1, 2, 7, 10, 11] 7
[9, -1, 0] 0
입출력 예 설명
입출력 예 #1
본문과 동일합니다.
입출력 예 #2
9, -1, 0을 오름차순 정렬하면 -1, 0, 9이고 가장 중앙에 위치하는 값은 0입니다.
import java.util.Arrays;
class Solution {
public int solution(int[] array) {
Arrays.sort(array);
return array[array.length/2];
}
}
다른사람의 풀이
import java.util.Arrays;
class Solution {
public int solution(int[] array) {
Arrays.sort(array);
return array[array.length >> 1];
}
}
댓글을 보니 시프트 연산이 조금 더 성능이 좋다고함.
큰 차이 없어서 가독성을 고려해 / 이 더 낫겠다는 댓글도있음
'Chapter02 > 코딩테스트' 카테고리의 다른 글
[고딩데스드] 프로그래머스 코딩 기초 트레이닝 > 더 크게 합치기 (0) | 2023.11.01 |
---|---|
[고딩데스드] 프로그래머스 코딩 기초 트레이닝 > 문자 리스트를 문자열로 변환하기 , A 강조하기 (2) | 2023.11.01 |
[고딩데스드] Lv.0 여러개 (0) | 2023.10.23 |
[고딩데스드] 코딩테스트 입문 > 편지 , 머쓱이보다 키가 큰 사람, 배열 자르기, 분수의 덧셈 (1) | 2023.10.19 |
[고딩데스드] 비밀지도도움말 (1) | 2023.10.16 |