정수를 저장한 배열, 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) {
if(arr.length==1){
int[] answer = {-1};
return answer;
}
int[] answer = new int[arr.length-1];
int min = arr[0];
for(int i=1; i<arr.length; i++)
if(min>arr[i]) min = arr[i];
int j=0;
for(int i=0; i< arr.length; i++){
if(arr[i]==min) continue;
answer[j] = arr[i];
j++;
}
return answer;
}
}
package programmers;
import java.util.Arrays;
import java.util.Scanner;
public class Solution {
public static int[] solution(int[] arr) {
if(arr.length==1){
int[] answer = {-1};
return answer;
}
int[] answer = new int[arr.length-1];
int min = arr[0];
for(int i=1; i<arr.length; i++)
if(min>arr[i]) min = arr[i];
int j=0;
for(int i=0; i< arr.length; i++){
if(arr[i]==min) continue;
answer[j] = arr[i];
j++;
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] arr = new int[num];
for(int i=0; i< arr.length; i++)
arr[i] = sc.nextInt();
System.out.println(Arrays.toString(solution(arr)));
}
}
배열의 길이가 한개, 즉, return 배열값이 없으면 -1을 return하기 위해서 if문을 사용하였다. 배열값이 있을 때는 최소값을 제외하고 return해야 하므로 for문을 통해 최소값을 찾았다. 그 후 배열에 넣는 for문을 돌리고, 최소값일 때 continue 시켰다.
출력할 때는 Array.toString을 사용해 int배열을 [1, 2, 3] 이러한 형식으로 출력되게 하였다.
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
class Solution {
public int solution(int[] numbers) {
int answer = -1;
return answer;
}
}
class Solution {
public int solution(int[] numbers) {
int answer = 0;
boolean[] cnt = new boolean[10];
for(int a:numbers)
cnt[a] = true;
for(int i=0; i<cnt.length; i++) {
if(cnt[i]==false) answer += i;
}
return answer;
}
}
package programmers;
import java.util.Scanner;
public class Solution {
public static int solution(int[] numbers) {
int answer = 0;
boolean[] cnt = new boolean[10];
for(int a:numbers)
cnt[a] = true;
for(int i=0; i<cnt.length; i++) {
if(cnt[i]==false) answer += i;
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int[] numbers = new int[num];
for(int i=0; i<numbers.length; i++)
numbers[i] = sc.nextInt();
System.out.println(solution(numbers));
}
}
for(:)을 사용해 a에 numbers 값을 대입해 사용하고, 입력된 숫자일 경우 true를 넣어주었다. 그 후 입력되지 않은 즉,false일 경우에만 return값에 더하였다.
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
class 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;
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;
}
}
package programmers;
import java.util.Scanner;
public class Solution {
public static 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;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int left = sc.nextInt();
int right = sc.nextInt();
System.out.println(solution(left,right));
}
}
left부터 right사이의 수에서 약수를 구하기 위해 이중for문을 사용해 그 수 범위 약수를 찾고, 개수를 더해주었다. 약수의 개수를 구한 뒤 if문을 활용해 짝수인지 홀수인지 구하고 그에 따라 더하거나 빼주었다.
String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
class Solution {
public String solution(String[] seoul) {
String answer = "";
return answer;
}
}
class Solution {
public String solution(String[] seoul) {
String answer = "";
for(int i=0; i<seoul.length; i++){
if(seoul[i].equals("Kim")) answer = "김서방은 "+i+"에 있다";
}
return answer;
}
}
package programmers;
import java.util.Scanner;
public class Solution {
public static String solution(String[] seoul) {
String answer = "";
for(int i=0; i<seoul.length; i++){
if(seoul[i].equals("Kim")) answer = "김서방은 "+i+"에 있다";
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
String[] seoul = new String[num];
for(int i=0; i<seoul.length; i++)
seoul[i] = sc.next();
System.out.println(solution(seoul));
}
}
문자열을 입력 받은 후 Kim의 위치를 알아야 하기때문에 Kim과 각 문자열을 비교해주었다. 문자열을 비교할 때는 equals 메소드를 활용해주었다. 그 후 Kime의 위치를 찾으면 출력문과 함께 i의 값을 return 시켰다.
전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.
전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.
구조대 : 119
박준영 : 97 674 223
지영석 : 11 9552 4421
전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요.
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
return answer;
}
}
import java.util.Arrays;
class Solution {
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])){
return false;
}
}
return answer;
}
}
package programmers;
import java.util.Arrays;
import java.util.Scanner;
public class Solution {
public static 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])){
return false;
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
String[] phone = new String[num];
for(int i=0; i<phone.length; i++)
phone[i] = sc.next();
System.out.println(solution(phone));
}
}
효율성이 없었더라면 contains, matches, indexOf 등을 활용해야 할 수 있지만, 효율성을 고려해야하기 때문에 사용하기 어려웠다. 그래서 Arrays.sort()를 활용해 먼저 오름차순 정렬을 시켜주어야 한다. 그 후 starsWith()를 활용해 대상 문자열이 특정 문자 또는 문자열로 시작하는지 for문 한개를 활용해 다음방과 비교하였다. 이를 통해 효율성 높고 정확한 코드를 짤 수 있다.
시험기간 전인데도 이렇게 꼼꼼히 문제를 푼 모습이 very good합니다
벌써부터 효율성을 생각하는 모습이 very smart하네요