Noah_Developer
Developer Noah
Noah_Developer
전체 방문자
오늘
어제
  • 전체보기 (87)
    • Programmers (33)
      • Level1 (33)
    • FRONT-END (3)
      • React (2)
      • HTML (0)
      • CSS (0)
      • JavaScrpit (1)
    • BACK-END (23)
      • JAVA (14)
      • C (0)
      • Spring (5)
    • DATABASE (11)
      • MySQL (3)
      • Oracle (0)
    • IDE (2)
      • IntelliJ (2)
      • Eclipse (0)
      • VSCode (0)
    • Android (1)
    • 용어 (2)
      • 금융 (2)
    • Developer Diary (5)
      • Web (1)
    • 자격증 (1)
    • Operating System (3)
      • Linux (2)
    • Info (2)

블로그 메뉴

  • 홈
  • 방명록
  • 포트폴리오
  • 깃허브

공지사항

  • 🙏 방문 감사합니다.

인기 글

태그

  • 알고리즘 예제
  • 알고리즘 블로그
  • programmers
  • 크레인 인형뽑기 풀이
  • 알고리즘 문제
  • 개발일기
  • 코딩테스트
  • String StringBuilder 차이
  • 코딩테스트 준비
  • 카카오공채
  • 프로그래머스
  • 자바 쉬운 알고리즘
  • 알고리즘 쉬운문제
  • 카카오 블라인드 테스트
  • level1
  • 코딩테스트 문제
  • 프로그래머스 레벨1
  • 알고리즘 풀이
  • 크레인 인형뽑기 정답
  • 알고리즘 연습문제
  • 코딩테스트 문제 풀이
  • 프로그래머스 문제풀이
  • programmers level 1
  • MySQL
  • 카카오 블라인드
  • 프로그래머스 연습문제
  • 프로그래머스 코딩연습
  • 크레인 인형뽑기
  • 초보자 알고리즘
  • 자바 알고리즘 연습문제

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
Noah_Developer

Developer Noah

[Programmers Level1] 같은 숫자는 싫어 및 문제 풀이
Programmers/Level1

[Programmers Level1] 같은 숫자는 싫어 및 문제 풀이

2021. 5. 1. 08:00
728x90

문제바로가기

 

코딩테스트 연습 - 같은 숫자는 싫어

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은

programmers.co.kr

문제 설명

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,

  • arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
  • arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.

배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 배열 arr의 크기 : 1,000,000 이하의 자연수
  • 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수

입출력 예

arr answer
[1,1,3,3,0,1,1] [1,3,0,1]
[4,4,4,3,3] [4,3]

입출력 예 설명

입출력 예 #1,2
문제의 예시와 같습니다.


1차 시도..

배열 크기 체크 후 배열 생성 하고,

마지막 인덱스에 배열의 마지막번호를 무조건넣어 처리 했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Solution {
    public int[] solution(int []arr) {
        int[] answer = new int[arr.length];
        
        // 중복되지 않는 숫자가 몇개가 있는지 체크
        int cnt = 1;
 
        // arr 길이만큼 도는 for
        for(int i = 1 ; i < arr.length ; i++){
            // arr[i] 번째 방의 값과 arr[i-1]의 값이 다를때 ( 즉, 중복되지 않을 때 )
            if( arr[i] != arr[i-1]){
                // 건수 증가
                cnt++;
            }
        }
 
        // 건수크기의 배열 생성
        answer = new int[cnt];
 
        // answer 배열의 인덱스처리할 변수 추가
        int idx = 0;
        // arr 길이만큼 도는 for
        for(int i = 1 ; i < arr.length ; i++){
            // arr[i] 번째 방의 값과 arr[i-1]의 값이 다를때 ( 즉, 중복되지 않을 때 )
            if( arr[i] != arr[i-1]){
                // answer[idx] 증가시키며 중복되지 않는 데이터 SET
                answer[idx++] = arr[i-1];
            }
        }
        // 마지막 인덱스에 배열의 가장 끝자리 처리
        answer[idx] = arr[arr.length-1];
        
        return answer;
    }
}
Colored by Color Scripter
cs

테스트 통과 후 채점 결과

1차 제출 결과 채점

다른 사람의 풀이를 보니 ArrayList 로 해결한 방법도 봤다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.ArrayList;
import java.util.List;
 
public class Solution {
    public int[] solution(int []arr) {
        
        List<Integer> list = new ArrayList<Integer>();
        list.add(arr[0]);
 
        for(int i = 1 ; i < arr.length ; i++){
            if(arr[i] != arr[i-1]){
                list.add(arr[i]);
            }
        }
 
        int[] answer = new int[list.size()];
 
        for (int i = 0; i < list.size(); i++){
            answer[i] = list.get(i);
        }
        
        return answer;
    }
}
Colored by Color Scripter
cs

 

2차 제출 결과 체점

 

ArrayList 처리 하는 것보다 그냥 plain하게 처리하는게 효율성 측면에서 더 낫다는걸 알게됬다.

728x90
저작자표시 (새창열림)

'Programmers > Level1' 카테고리의 다른 글

[Programmers Level1] 서울에서 김서방 찾기 정답 및 문제 풀이  (0) 2021.05.04
[Programmers Level1] 두 개 뽑아서 더하기 정답 및 문제 풀이  (0) 2021.05.02
[Programmers Level1] 가운데 글자 가져오기 정답 및 문제 풀이  (0) 2021.04.30
[Programmers Level1] 문자열 내 p와 y의 개수 정답 및 문제 풀이  (0) 2021.04.29
[Programmers Level1] 신규 아이디 추천 정답 및 풀이 설명 카카오 블라인드 공개채용 문제  (0) 2021.04.28
    'Programmers/Level1' 카테고리의 다른 글
    • [Programmers Level1] 서울에서 김서방 찾기 정답 및 문제 풀이
    • [Programmers Level1] 두 개 뽑아서 더하기 정답 및 문제 풀이
    • [Programmers Level1] 가운데 글자 가져오기 정답 및 문제 풀이
    • [Programmers Level1] 문자열 내 p와 y의 개수 정답 및 문제 풀이
    Noah_Developer
    Noah_Developer
    개발 기록 목적을 가진 블로그입니다.

    티스토리툴바