[목차]
▸ Lv.1
1. 가운데 글자 가져오기
2. 수박수박수박수박수박수?
3. 내적
4. 약수의 개수와 덧셈
▸ Lv.0
5. 옹알이(1)
6. 정수를 나선형으로 배치하기
💡문제
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
▼ 코드
class Solution {
public String solution(String s) {
String answer = "";
char[] charArray = s.toCharArray();
int middleNumber = charArray.length/2 - 1;
if(charArray.length % 2 != 0){
middleNumber += 1;
answer = String.valueOf(charArray[middleNumber]);
} else {
answer = String.valueOf(charArray[middleNumber]);
middleNumber += 1;
answer += charArray[middleNumber];
}
return answer;
}
}
💡문제
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
▼ 코드
class Solution {
public String solution(int n) {
String answer = "";
int repeatCount = n/2;
for (int i = 1; i <= repeatCount; i++){
answer += "수박";
}
if (n%2 != 0){
answer += "수";
}
return answer;
}
}
💡문제
길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
이때, a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
▼ 코드
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;
}
}
💡문제
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
▼ 코드
import java.util.List;
import java.util.ArrayList;
class Solution {
public int solution(int left, int right) {
int answer = 0;
List<Integer> numbers = new ArrayList<>();
List<Integer> divisor = new ArrayList<>();
List<Integer> divisorCount = new ArrayList<>();
for(int i = left; i <= right; i++){
numbers.add(i);
}
for(int i = left; i <= right; i++){
divisor.clear();
for(int j = 1; j <= i; j++){
if(i%j==0){
divisor.add(i);
}
}
divisorCount.add(divisor.size());
}
for (int i=0; i<divisorCount.size(); i++){
if(divisorCount.get(i)%2==0){
answer += numbers.get(i);
} else{
answer -= numbers.get(i);
}
}
return answer;
}
}
💡문제
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
▼ 제한사항
1 ≤ babbling의 길이 ≤ 100
1 ≤ babbling[i]의 길이 ≤ 15
babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
문자열은 알파벳 소문자로만 이루어져 있습니다.
▼ 입출력 예
babbling | result |
---|---|
["aya", "yee", "u", "maa", "wyeoo"] | 1 |
["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] | 3 |
▼ 코드
class Solution {
public int solution(String[] babbling) {
int answer =0;
for(int i = 0; i < babbling.length; i++){
babbling[i] = babbling[i].replace("aya", ".");
babbling[i] = babbling[i].replace("ye", ".");
babbling[i] = babbling[i].replace("woo", ".");
babbling[i] = babbling[i].replace("ma", ".");
}
for(int i = 0; i < babbling.length; i++){
babbling[i] = babbling[i].replace(".", "");
if(babbling[i].isEmpty()){
answer += 1;
}
}
return answer;
}
}
💡문제
양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
▼ 제한 사항
1 ≤ n ≤ 30
▼ 입출력 예
n | result |
---|---|
4 | [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]] |
5 | [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]] |
▼ 코드
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
int start = 1;
int left = 0;
int right = n-1;
int top = 0;
int bottom = n-1;
while(start<=n*n){
for(int i = left; i <= right; i++){
answer[left][i] = start++;
}
top++;
for(int i = top; i <= bottom; i++){
answer[i][right] = start++;
}
right--;
for(int i=right; i>=left; i--){
answer[bottom][i] = start++;
}
bottom--;
for(int i=bottom; i>= top; i--){
answer[i][left] = start++;
}
left++;
}
return answer;
}
}