Coding Test/Java Coding Test
[프로그래머스 / 자바] - 같은 숫자는 싫어
nam_ji
2024. 8. 21. 10:42
같은 숫자는 싫어 - LV. 1
문제
- 정수 배열 arr이 매개변수로 주어집니다.
- arr의 원소는 0 ~ 9까지의 숫자로 이루어져 있습니다.
- 배열의 연속적으로 나타나는 숫자 하나만 남기고 전부 제거하려고 합니다.
- 반환 시 arr 원소의 순서를 유지해야 합니다.
- 입출력 예
-
arr result [1,1,3,3,0,1,1] [1,3,0,1] [4,4,4,3,3] [4,3]
-
테스트 (인텔리제이)
- answer의 타입을 list로 수정하고 arr의 첫 번째 원소를 넣어줍니다.
- 이제 for문으로 arr의 크기만큼 순회하도록 설정하고
- if문으로 answer의 마지막 원소가 arr의 원소와 같은 값이 아니라면 answer에 추가하도록 하여 해결했습니다.
- 두 번째 풀이는 다른 사람 풀이에서 반환 타입을 수정하지 않고 푼 풀이여서 가져와 봤습니다.
- preNum이라는 int 변수와 List 배열을 선언해줍니다.
- for문으로 arr의 값을 하나씩 꺼내서
- if문으로 preNum과 arr의 원소를 비교합니다. preNum과 다르다면 List 배열에 arr의 원소를 추가하고 해당 원소를 preNum에 저장합니다. 이렇게 List 배열을 완성하고
- int[] 배열을 List 배열의 크기만큼이 되도록 선언해줍니다.
- for문으로 List 배열의 크기만큼 순회하도록 하고 answer에 List 배열의 원소를 하나씩 추가해주면 됩니다.
package com.namji.codingtest;
import org.springframework.expression.spel.ast.Literal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class 같은_숫자는_싫어 {
public static void main(String[] args) {
/*
정수 배열 arr이 매개변수로 주어집니다.
arr의 원소는 0 ~ 9까지의 숫자로 이루어져 있습니다.
배열의 연속적으로 나타나는 숫자 하나만 남기고 전부 제거하려고 합니다.
반환 시 arr 원소의 순서를 유지해야 합니다.
입출력 예
arr answer
[1,1,3,3,0,1,1] [1,3,0,1]
[4,4,4,3,3] [4,3]
입출력 설명
#1
arr = [1, 1, 3, 3, 0, 1, 1] 이면
[1, 3, 0, 1] 을 return 합니다.
#2
arr = [4, 4, 4, 3, 3] 이면
[4, 3] 을 return 합니다.
*/
// int[] arr = {1,1,3,3,0,1,1};
// List<Integer> answer = new ArrayList<>();
// answer.add(arr[0]);
//
// for (int i = 0; i < arr.length; i++) {
// if (answer.get(answer.size() - 1) != arr[i]) {
// answer.add(arr[i]);
// }
// }
// System.out.println(answer);
int[] arr = {1,1,3,3,0,1,1};
List<Integer> list = new ArrayList<>();
int preNum = 10;
for (int num : arr) {
if (preNum != num) {
list.add(num);
}
preNum = num;
}
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
System.out.println(Arrays.toString(answer));
}
}
프로그래머스 코드
// import java.util.*;
// public class Solution {
// public List solution(int []arr) {
// List<Integer> answer = new ArrayList<>();
// answer.add(arr[0]);
// for (int i = 0; i < arr.length; i++) {
// if (answer.get(answer.size() - 1) != arr[i]) {
// answer.add(arr[i]);
// }
// }
// return answer;
// }
// }
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
List<Integer> list = new ArrayList<>();
int preNum = 10;
for (int num : arr) {
if (preNum != num) {
list.add(num);
}
preNum = num;
}
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}