[프로그래머스] 5: 핸드폰 번호 가리기, 없는 숫자 더하기, 제일 작은 수 제거하기

서예진·2024년 1월 15일
0
post-custom-banner

목차
1. 핸드폰 번호 가리기
2. 없는 숫자 더하기
3. 제일 작은 수 제거하기

1. 핸드폰 번호 가리기 : Lv.1

출처: 프로그래머스 코딩테스트 연습 > 연습문제 > 핸드폰 번호 가리기

class Solution {
    public String solution(String phone_number) {
        String answer = "";
        char[] chararray = phone_number.toCharArray();
        String backnumber = "";
        for(int i = chararray.length - 4; i <= chararray.length - 1; i++){
            backnumber += chararray[i];
        }
        for(int i = 0; i < chararray.length -4; i++){
            answer += '*';
        }
        answer = answer + backnumber;
        return answer;
    }
}
  • 먼저 문자열을 배열로 전환하고, 뒤에서부터 반복문을 돌면서 4개의 숫자를 다른 문자열로 만들고 마지막에 *으로 가린 문자열과 합치는 방법으로 접근
    => 처음에 첫번째 for문에서 (i = chararray.length -1; i >= chararray.length; i--)로 작성했더니 출력값이 뒤 4자리가 거꾸로 출력되어 틀렸음

2. 없는 숫자 더하기 : Lv.1

출처: 프로그래머스 코딩테스트 연습 > 월간 코드 챌린지 시즌3 > 없는 숫자 더하기

class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        int[] numarray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        for(int i=0; i < numarray.length; i++){
            for(int j=0; j < numbers.length; j++){
                if(numarray[i] == numbers[j]){
                    numarray[i] = 0;
                }
            }
        }
        for(int i = 0; i < numarray.length; i++){
            answer += numarray[i];
        }
        return answer;
    }
}
  • 먼저 없는 숫자를 찾아야 한다.
  • 0-9 숫자들의 배열을 만든다.
  • 이중 for문을 수행하면서 이 배열에 없는 숫자를 찾은 후 그 숫자를 더하는 반복문을 수행한다.
  • 0-9 숫자들의 배열안에 있는 숫자와 매개변수 배열안에 있는 숫자와 일치하면 해당 숫자를 0으로 바꾼다.
  • 그 후 이 배열의 요소를 모두 더한다.

3. 제일 작은 수 제거하기 : Lv.1

출처: 프로그래머스 코딩테스트 연습 > 연습문제 > 제일 작은 수 제거하기

import java.util.List;
import java.util.ArrayList;

class Solution {
    public int[] solution(int[] arr) {
        int min = arr[0];
        List <Integer> list = new ArrayList<>();
        for(int i = 1; i < arr.length; i++){
            if (arr[i] < min){
                min = arr[i];
            }
        }
        
        for(int n : arr){
            if(n != min){
                list.add(n);
            }
        }
        
        int[] answer = new int[list.size()];
        
        for(int i = 0; i < list.size(); i++){
            answer[i] = list.get(i);
        }
        return (answer.length==0) ? new int[] {-1} : answer ;
    }
}
  • 배열의 index가 0인 값을 기준으로 삼고 배열안에 요소들을 대소비교를 하여 가장 작은 수를 찾는다.
  • 이제 이 가장 작은 수와 같지 않은 값들만 리스트에 저장한다.
  • 마지막에 리스트를 배열로 변환한다.
    => 가장 작은 수를 찾을 때 배열의 0번째 값을 min으로 초기화 했으면 배열의 1번째 값부터 비교해야 한다.
    => 리스트를 배열로 변환할 때 list.toArray()를 사용하여 변환하려 했지만 호환되지 않는 타입이라는 오류가 떠서 반복문을 이용하는 방법으로 바꿨다.
profile
안녕하세요
post-custom-banner

0개의 댓글