[프로그래머스] 코딩 기초 트레이닝 - Day 3
문제 1. 문자열 섞기
문제: 길이가 같은 두 문자열 str1과 str2가 주어집니다. 두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.
- 1 ≤
str1의 길이 =str2의 길이 ≤ 10 str1과str2는 알파벳 소문자로 이루어진 문자열
입력: solution("aaaaa", "bbbbb")
출력: "ababababab"
정답:
class Solution {
public String solution(String str1, String str2) {
StringBuilder result = new StringBuilder();
for(int i = 0; i < str1.length(); i++) {
result.append(str1.charAt(i)).append(str2.charAt(i));
}
return String.valueOf(result);
}
}
획득: 처음엔 char[] 배열을 생성해서 작성했는데 charAt()을 사용하면 따로 배열을 생성하지 않아도 된다는것을 알았음
문제 2. 문자 리스트를 문자열로 변환하기
문제: 문자들이 담겨있는 배열 arr가 주어집니다. arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
- 1 ≤
arr의 길이 ≤ 200 arr의 원소는 전부 알파벳 소문자로 이루어진 길이가 1인 문자열
입력: solution(["a", "b", "c"])
출력: "abc"
정답:
class Solution {
public String solution(String[] arr) {
StringBuilder result = new StringBuilder();
for(String c : arr) {
result.append(c);
}
return String.valueOf(result);
}
}
획득: 배열 -> 문자열 변환
문제 3. 문자열 곱하기
문제: 문자열 my_string과 정수 k가 주어질 때, my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.
- 1 ≤
my_string의 길이 ≤ 100 my_string은 영소문자로만 이루어짐- 1 ≤
k≤ 100
입력: solution("string", 3)
출력: "stringstringstring"
입력: solution("love", 10)
출력: "lovelovelovelovelovelovelovelovelovelove"
정답:
class Solution {
public String solution(String my_string, int k) {
return my_string.repeat(k);
}
}
획득: repaet()을 이미 알고 있어서 반복문 사용하지 않았음
문제 4. 더 크게 합치기
문제: 연산 ⊕는 두 정수를 붙여서 쓴 값을 반환합니다. (예: 12 ⊕ 3 = 123, 3 ⊕ 12 = 312) 양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요. 단, 두 값이 같다면 a ⊕ b를 return 합니다.
- 1 ≤
a,b< 10,000
입력: solution(9, 91)
출력: 991
입력: solution(89, 8)
출력: 898
정답:
class Solution {
public int solution(int a, int b) {
int ab = Integer.parseInt("" + a + b);
int ba = Integer.parseInt("" + b + a);
return Math.max(ab, ba);
}
}
획득:
- java에선 숫자를 합하지 않고 붙일때 ""을 더해주면 된다는것을 알았음
Math.max(): 비교해서 큰 수 골라주는거
문제 5. 두 수의 연산값 비교하기
문제: 연산 ⊕는 두 정수를 붙여서 쓴 값을 반환합니다. (예: 12 ⊕ 3 = 123, 3 ⊕ 12 = 312) 양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 * a * b 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요. 단, 두 값이 같으면 a ⊕ b를 return 합니다.
- 1 ≤
a,b< 10,000
입력: solution(2, 91)
출력: 364
입력: solution(91, 2)
출력: 912
정답:
class Solution {
public int solution(int a, int b) {
return Math.max((2*a*b),(Integer.parseInt(""+a+b)));
}
}
획득: Math.max와 ""문자열 붙이기 배운거 활용