정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를 들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
🔹 arr은 길이 1 이상인 배열입니다.
🔹 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
return answer;
}
}
public class Solution16 {
public int[] solution(int[] arr) {
int[] answer = {};
int min=arr[0];
if(arr.length!=1) {
answer=new int[arr.length-1];
for(int i=1; i<arr.length; i++) {
if(min>arr[i])
min=arr[i];
}
int k=0;
for(int j=0; j<arr.length; j++) {
if(min==arr[j])
continue;
else
answer[k++]=arr[j];
}
}
else {
answer=new int[1];
answer[0]=-1;
}
return answer;
}
}
만약 arr의 길이가 1이라면 answer의 길이를 1로 정해주고 -1을 넣어준다. 하지만 만약 arr의 길이가 1이 아니라면 answer의 길이를 arr의 길이에서 1을 뺀 만큼으로 지정해주고 arr 배열 안에서 값들을 min과 비교해가며 제일 작은 수를 구한다. 그 다음 for문을 통해 min일 경우 continue를 써서 패스하고 나머지 값들은 answer 안에 넣어준다.
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
🔹 1 ≤ numbers의 길이 ≤ 9
🔹 0 ≤ numbers의 모든 원소 ≤ 9
🔹 numbers의 모든 원소는 서로 다릅니다.
class Solution {
public int solution(int[] numbers) {
int answer = -1;
return answer;
}
}
public class Solution17 {
public int solution(int[] numbers) {
int sum=0;
for(int i=0; i<numbers.length; i++) {
sum+=numbers[i];
}
int answer=45-sum;
return answer;
}
}
0~9까지의 합이 45이므로 45에서 numbers 안에 있는 값들의 합을 뺀 값을 answer에 넣어줘서 리턴하였다.
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
🔹 1 ≤ left ≤ right ≤ 1,000
class Solution {
public int solution(int left, int right) {
int answer = 0;
return answer;
}
}
public class Solution18 {
public int solution(int left, int right) {
int answer = 0;
int cnt;
for(int i=left; i<=right; i++) {
cnt=0;
for(int j=1; j<=i; j++) {
if(i%j==0)
cnt++;
}
if(cnt%2==0)
answer+=i;
else
answer-=i;
}
return answer;
}
}
i를 left부터 right까지 먼저 돌리고 안에서 1부터 i만큼의 수로 i를 나눴을 때 0이면 cnt를 증가하게 합니다. for문을 나왔을 때 만약 cnt가 짝수이면 answer에 더하고 홀수이면 answer에서 뺍니다.
String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
🔹 seoul은 길이 1 이상, 1000 이하인 배열입니다.
🔹 seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
🔹 "Kim"은 반드시 seoul 안에 포함되어 있습니다.
class Solution {
public String solution(String[] seoul) {
String answer = "";
return answer;
}
}
public class Solution19 {
public String solution(String[] seoul) {
String answer = "";
String str="Kim";
for(int i=0; i<seoul.length; i++) {
if(str.equals(seoul[i])) {
answer="김서방은 "+i+"에 있다";
break;
}
else
continue;
}
return answer;
}
}
seoul 배열의 길이만큼 for문을 돌려서 문자열을 비교하는 equals()를 사용하여 "Kim"이 들어있는 str과 같으면 i값을 넣어 "김서방은 i에 있다"를 반환해준다.
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.
구조대 : 119
박준영 : 97 674 223
지영석 : 11 9552 4421
전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요.
🔹 phone_book의 길이는 1 이상 1,000,000 이하입니다.
🔹 각 전화번호의 길이는 1 이상 20 이하입니다.
🔹 같은 전화번호가 중복해서 들어있지 않습니다.
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
return answer;
}
}
public class Solution20 {
public boolean solution(String[] phone_book) {
boolean answer = true;
Arrays.sort(phone_book);
for(int i=0; i<phone_book.length-1; i++) {
if(phone_book[i+1].startsWith(phone_book[i]))
answer = false;
}
return answer;
}
}
Arrays.sort()를 사용하여 오름차순으로 정렬을 해줍니다. i가 0일 때부터 phone_book의 길이에서 1을 뺀 길이까지 for문을 돌려 i와 (i+1)값을 비교합니다. 만약 phone_book[i+1]이 phone_book[i]의 값으로 시작하면 answer에 false를 넣어줍니다.만약 접두어가 없다면 true였던 answer 그대로를 반환해줍니다.
startsWith()는 만약 str1.startsWith(str2)라고 써주었을 때 str1이 str2의 값으로 시작하는지를 알 수 있는 함수입니다.
제일 작은 수 제거하기 문제 잘 풀었네요!! 풀이가 좋아요