입출력 예
num_list | result |
---|---|
[1,2,3,4,5,] | [2,3] |
나의 풀이
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[2];
int odd = 0;
int even = 0;
for(int i : num_list){
if(i % 2 == 0){
even++;
}else{
odd++;
}
}
answer[0] = even;
answer[1] = odd;
return answer;
}
코드 리뷰
num_list안에 원소가 몇개가 있든 홀,짝 2개의 경우만 존재한다. 따라서 배열의 크기를 2(INDEX 0,1)로 잡는다. int odd, even (홀,짝 카운팅 변수)를 초기화 하고, for문 또는 for-each를 돌려 리스트의 원소를 2로 나누어 몫이 0이면 짝수, 1이면 홀수를 카운팅되게끔 하여 answer배열에 담아 리턴한다.
입출력 예
numbers | num1 | num2 | result |
---|---|---|---|
[1, 2, 3, 4, 5] | 1 | 3 | [2,3,4] |
[1,3,5,] | 1 | 2 | [3,5] |
나의 풀이
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] newArray = new int[num2-num1+1];
int cnt = 0;
for(int i = num1; i <= num2; i++){
newArray[cnt] = numbers[i];
cnt++;
}
return newArray;
}
}
코드 리뷰
배열 자르기를 한 원소를 담을 newArray의 크기를
num1, num2의 범위 -1로 잡아준다.
for문 반복을 num1에서 num2까지 시행후
newArray 배열안에 넣는데, 이때 newArray[ ] 안에 어떤 변수를 넣느냐가 관건인거같다. newArray[0]번 부터 리턴이 이루어져야하기 때문에
새 변수 cnt를 초기화하여 반복문 안에서 증가하는 방법으로 프로그램을 구성하였다.
x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.
제한사항
dot
의 길이 = 2
dot[0]
은 x좌표를, dot[1]
은 y좌표를 나타냅니다
-500 ≤ dot
의 원소 ≤ 500
dot
의 원소는 0이 아닙니다.
입출력 예
dot | result |
---|---|
[2,4] | 1 |
[-7,9] | 2 |
나의 풀이
class Solution {
public int solution(int[] dot) {
int answer = 0;
if(dot[0] > 0 && dot[1] > 0){
answer = 1;
}else if(dot[0] > 0 && dot[1]< 0){
answer = 4;
}else if(dot[0] < 0 && dot[1] > 0){
answer = 2;
}else{
answer = 3;
}
return answer;
}
}
numbers | result |
---|---|
[1, 2, 3, 4, 5] | 20 |
[0, 31, 24, 10, 1, 9] | 744 |
class Solution {
public int solution(int[] numbers) {
int max = 0;
for(int i = 0; i<numbers.length; i++){
for(int j = 0; j<numbers.length; j++){
if(i != j && numbers[j] * numbers[i] > max){
max = numbers[j] * numbers[i];
}
}
}
return max;
}
}
코드 리뷰
max = 0; 선언하고 , 배열의 중복값을 제외시키며
max값과 다음 배열의 곱을 비교하여 최대값을 검출하는 프로그램을 작성
import java.util.*;
class Solution {
public int solution(int[] numbers) {
Arrays.sort(numbers);
int answer = numbers[numbers.length-1]*numbers[numbers.length-2];
return answer;
}
}
idea
Arrays 클래스의 sort 메소드를 활용하면 더 쉽게 해결 할 수 있다. 자연스레 sort한 후 배열의 끝과 끝-1 이 최대값과 그 다음 값이기 때문에 그 값을 리턴하면 된다.
numbers[numbers.length-1] * numbers[numbers.length-2]
여기서 numbers.length는 배열의 크기를 나타내기 때문에 index값을 쓰기 위해 -1, -2를 함