-
[자바(JAVA)] 중복된 숫자 개수, 짝수 홀수 개수, 배열 자르기(Arrays.copyOfRange() ), 최댓값 만들기(Arrays.sort)프로그래머스/자바(JAVA) 2023. 5. 26. 04:16728x90
1. 중복된 숫자 개수
class Solution { public int solution(int[] array, int n) { int count = 0; for(int i=0; i< array.length; i++){ if(array[i] == n) count++; } return count; } }
// 다른풀이 class Solution { public int solution(int[] array, int n) { int count = 0; for(int num: array){ if(num == n) count++; } return count; } }
2. 짝수 홀수 개수
// 내 풀이 class Solution { public int[] solution(int[] num_list) { int even = 0, odd = 0; int[] answer = new int[2]; for (int i=0; i< num_list.length; i++){ if(num_list[i] % 2 == 0) { even++; } else odd++; answer[0] = even; answer[1] = odd; } return answer; } }
✅ 1. 다른풀이 (코드 간결화)
// 1. 다른풀이 (코드 간결화) class Solution { public int[] solution(int[] num_list) { int[] answer = new int[2]; for(int i = 0 ; i < num_list.length ; i++){ if(num_list[i]%2==0){ answer[0]++; }else{ answer[1]++; } } return answer; } }
📄 내 코드보다 깔끔한 이유 ❓
: 출력값이 [짝수, 홀수]로 나오기 때문에 굳이 변수를 선언하는게 아니라 if문에 맞춰서 answer[0], [1]값을 바로 카운팅하면 된다.✅ 2. 다른풀이
class Solution { public int[] solution(int[] num_list) { int[] answer = new int[2]; for(int i = 0; i < num_list.length; i++) answer[num_list[i] % 2]++; return answer; } }
📄 풀이)
num_list = {1, 2, 3, 4, 5}; 일때 num_list[0] % 2 = 1; num_list[1] % 2 = 0; num_list[2] % 2 = 1; num_list[3] % 2 = 0; num_list[4] % 2 = 1; answer[1]++; answer[0]++; answer[1]++; answer[0]++; answer[1]++; // 결과값 형태: [짝수의 개수, 홀수의 개수] // 짝수 = 나머지가 0임 = answer의 0번째 인덱스에 카운팅됨 // 즉, answer[num_list[i] % 2]++; 코드로 짝수 or 홀수 판별 후 카운팅까지 가능함
3. 배열 자르기
class Solution { public int[] solution(int[] numbers, int num1, int num2) { int index = 0; int[] answer = new int[num2 - num1 + 1]; // 배열의 크기 지정 for (int i = num1; i <= num2; i++) { answer[index] = numbers[i]; // 여기서 값을 받기 위해 새로운 배열을 생성했음 index++; } return answer; } }
✅ 다른풀이(1) (코드 간결화)
class Solution { public int[] solution(int[] numbers, int num1, int num2) { int[] answer = new int[num2 - num1 + 1]; for (int i = num1; i <= num2; i++) { answer[i -num1] = numbers[i]; } return answer; } }
✅ 다른풀이(2)
import java.util.*; class Solution { public int[] solution(int[] numbers, int num1, int num2) { return Arrays.copyOfRange(numbers, num1, num2 + 1); } }
📌 copyOfRange()
java.util.Arrays.copyOfRange() 메서드는 Java에서 배열의 특정 구간을 복사하여 새로운 배열을 생성하는 기능을 제공하는 메서드이다.
public static T[] copyOfRange(T[] original, int from, int to)
- original: 복사할 원본 배열
- from: 복사할 구간의 시작 인덱스 (포함)
- to: 복사할 구간의 끝 인덱스 (포함하지 않음)
=> original 배열에서 from 인덱스부터 to 인덱스까지의 구간을 새로운 배열로 복사하여 반환하며, 반환되는 배열의 길이는 (to - from)
이다.from = 이상 ( from(인덱스 값) <= x)to = 미만( x < to(인덱스 값))
4. 배열 원소의 길이
class Solution { public int[] solution(String[] strlist) { int[] answer = new int [strlist.length]; // 배열생성, 길이=stelist배열의 길이 for(int i=0; i<strlist.length; i++) { answer[i] = strlist[i].length(); } return answer; } }
5. 배열 뒤집기
class Solution { public int[] solution(int[] num_list) { int[] answer = new int [num_list.length]; int idx = 0; for(int i = num_list.length - 1; i >=0; i--) { answer[idx] = num_list[i]; idx++; } return answer; } }
✅ 다른풀이 (코드간결화)
class Solution { public int[] solution(int[] num_list) { int[] answer = new int[num_list.length]; for(int i = 0; i< num_list.length; i++){ answer[i] = num_list[num_list.length-i-1]; } return answer; } }
int idx 변수를 생성하지 않고 반복문으로 돌리는대신
원본 배열의 인덱스값을 거꾸로 진행함
answer[i] = num_list[num_list.length-i-1];6. 최댓값 만들기 (1)
import java.util.Arrays; class Solution { public int solution(int[] numbers) { Arrays.sort(numbers); // 오름차순 정렬 후 return numbers[numbers.length-1] * numbers[numbers.length-2]; // 인덱스값으로 곱하기 } }
📌 sort()
java.util.Arrays 클래스에는 배열을 정렬하는 데 사용할 수 있는 sort() 메서드가 있다.이 메서드를 사용하면 배열의 요소를 오름차순으로 정렬할 수 있다.
public static void sort(int[] a) // a : 정렬하려는 배열
✅ sort() 예시코드
import java.util.Arrays; public class Main { public static void main(String[] args) { int[] array = {5, 2, 8, 1, 6}; Arrays.sort(array); // array를 오름차순으로 정렬함 // 정렬된 배열 출력 System.out.print(Arrays.toString(array)); } } // 출력값 : [1, 2, 5, 6, 8]
728x90'프로그래머스 > 자바(JAVA)' 카테고리의 다른 글