정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
return answer;
}
}
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
if(arr.length==1) return new int[]{-1};
int loc = 0;
for(int i = 0; i < arr.length ; i++){
if(arr[i]<arr[loc])
loc = i;
}
int index = 0;
answer = new int[arr.length - 1];
for(int i = 0; i < arr.length ; i++) {
if(i==loc) continue;
answer[index++] = arr[i];
}
return answer;
}
}
문제 푸는 과정
arr
의 길이가 1이면 -1을 담은 배열을 return 한다.arr
배열 중 가장 작은 값이 담긴 위치를 찾는다.arr
의 값을 넣는다.arr
의 길이가 1인 배열이면 가장 작은 수를 제거했을 때 배열의 길이 0이 된다. 따라서 -1을 바로 return 해준다.
가장 작은 값이 있는 배열의 위치를 찾기 위해 loc
을 선언한다. arr
의 값이 loc
방의 값보다 작으면 loc
은 arr
의 현재 위치로 바꿔준다.
새로운 배열 answer
은 작은 수를 제거한 배열이기 때문에 arr
보다 1이 작은 길이로 선언해준다. index
는 answer
배열의 방번호를 나타내는 변수이다. arr
은 i
를 통해 방번호를 찾아준다. 이때 i
와 loc
이 같다면 해당 값은 가장 작은 값이기 때문에 continue
를 사용해 해당 값은 넣지 않고 넘긴다.
문제 링크 🔗 : 제일 작은 수 제거하기
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers
가 매개변수로 주어집니다. numbers
에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
numbers
의 길이 ≤ 9numbers
의 모든 원소 ≤ 9numbers
의 모든 원소는 서로 다릅니다.class Solution {
public int solution(int[] numbers) {
int answer = -1;
return answer;
}
}
import java.util.*;
class Solution {
public int solution(int[] numbers) {
int answer = 0;
for(int i=0; i<10; i++)
answer+=i;
for(int i=0; i<numbers.length; i++)
answer-=numbers[i];
return answer;
}
}
문제 푸는 과정
numbers
에 들어있는 값을 뺀다.0~9까지 숫자 중 없는 수의 합을 구하기 때문에 반대로 생각해보면 없는 수의 합은 0~9까지의 합 중에서 있는 수를 빼면 된다.
문제 링크 🔗 : 없는 숫자 더하기
두 정수 left
와 right
가 매개변수로 주어집니다. left
부터 right
까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
left
≤ right
≤ 1,000class Solution {
public int solution(int left, int right) {
int answer = 0;
return answer;
}
}
class Solution {
public int solution(int left, int right) {
int answer = 0;
for(int i=left; i<=right; i++){
int count = 0;
for(int j=1; j<=i; j++){
if(i%j == 0) count++;
}
if(count%2==0) answer+=i;
else answer-=i;
}
return answer;
}
}
문제 푸는 과정
left
에서 right
까지 돌린다.left
에서 right
사이에 있는 수에 약수가 있다면 count
를 증가한다.count
가 짝수라면 수를 더하고 아니면 뺀다.left
와 right
의 사이에 수는 i
이고, j
는 i
의 약수를 구하기 위해 필요한 수이다. 만약 i
가 j
로 나눠진다면 j
가 약수이기 때문에 count
를 증가시킨다. i
의 약수를 모두 구하고 나면 count
의 홀짝여부를 판단하여 계산한다.
문제 링크 🔗 : 약수의 개수와 덧셈
String형 배열 seoul
의 element중 "Kim"의 위치 x
를 찾아, "김서방은 x
에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul
에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다
seoul
은 길이 1 이상, 1000 이하인 배열입니다.seoul
의 원소는 길이 1 이상, 20 이하인 문자열입니다.seoul
안에 포함되어 있습니다.class Solution {
public String solution(String[] seoul) {
String answer = "";
return answer;
}
}
import java.util.*;
class Solution {
public String solution(String[] seoul) {
return "김서방은 "+Arrays.asList(seoul).indexOf("Kim")+"에 있다";
}
}
문제 푸는 과정
seoul
을 배열에서 list
형태로 바꾼다.list
에서 "kim"
의 위치를 찾는다.Array인 seoul
을 list로 바꾸기 위해 Arrays.asList()
를 사용한다. 그 이유는 list의 요소값의 위치를 반환해주는 indexOf()
를 사용하기 위해서이다.
문제 링크 🔗 : 서울에서 김서방 찾기
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.
전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.
전화번호부에 적힌 전화번호를 담은 배열 phone_book
이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요.
phone_book
의 길이는 1 이상 1,000,000 이하입니다.class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
return answer;
}
}
import java.util.*;
class Solution {
public boolean solution(String[] phone_book) {
Arrays.sort(phone_book);
for(int i=1; i<phone_book.length; i++){
if(phone_book[i].startsWith(phone_book[i-1])){
return false;
}
}
return true;
}
}
문제 푸는 과정
phone_book
을 정렬한다.phone_book
을 비교하며 만약 phone_book
의 값이 그전 값으로 시작한다면 false를 return 한다.phone_book
을 정렬하는 이유는 문자열 배열은 문자열의 길이로 정렬하기 때문이다. 따라서 길이가 작은 값이 앞쪽으로 정렬된다. 길이가 작을수록 앞에 있기 때문에 그 뒤의 값에 접두어일 확률이 올라간다. 접두어는 길이가 더 짧아야 하기 때문이다.
phone_book
의 값이 접두어인지 확인하기 위해서 startsWith()
을 사용했다. 이때 접두어인지 확인해야하기 때문에 인수로 더 작은 값을 넘겼다. 함수의 반환값이 true일 경우 접두어이기 때문에 false를 return 한다.
문제 링크 🔗 : 전화번호 목록
전구 이모지를 붙여서인지 전 글 보다 보는 재미가 더 생긴 것 같아요!