항해99/코딩테스트

프로그래머스 #1 java- LV.1 문제풀이-개념정리

리동구 2022. 9. 29. 22:08

2022/09/27

  • 없는 숫자 더하기

1) 문제 설명

0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

2) 제한 사항

  • 1 ≤ numbers의 길이 ≤ 9
    • 0 ≤ numbers의 모든 원소 ≤ 9
    • numbers의 모든 원소는 서로 다릅니다.

 

코드리뷰

class Solution {
    public static int solution(int[] numbers) {
        int answer = 45;

        for(int i = 0; i < numbers.length; i++) {
            answer -= numbers[i];
        }
        return answer;
    }
    public static void main(String[] args) {
        int numberArr = solution(new int[]{1,2,3,4,6,7,8,0});
        System.out.println(numberArr);
    }
}

1~9까지를 모두 더한 값 45를 int answer로 저장;

-> 0부터 9까지의 숫자 중 일부가 들어있는 배열이 매개변수로 주어지기 때문에

//answer = answer - numbers[i]  //numbers 배열의 값들을 answer에서 모두 빼준다.

값들을 모두  빼면 해당 배열에서 없는 수의 총합을 return

 

개념획득

 

 

 

2022/09/27

  • 두 정수의 합 

1) 문제 설명

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

2) 제한 조건  
  • a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
  • a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
  • a와 b의 대소관계는 정해져있지 않습니다.
입출력 ex)
a b return
3 5 12
3 3 3
5 3 12

코드리뷰

class Solution {
    public long solution(int a, int b) {
        long answer = 0;
        if (a < b) {
            for (int i = a; i <= b; i++) {    
                answer += i;
            }
        } else {
            for (int i = b; i <= a; i++) {
                answer += i;
            }
        }
            return answer;
        }

    public static void main(String[] args) {
        Solution so = new Solution();
        System.out.println(so.solution(3,5));
    }
}

개념획득

 

 

 

 

2022/09/27

  • 평균 구하기

1) 문제 설명

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

2) 제한 조건

  • arr은 길이 1 이상, 100 이하인 배열입니다.
  • arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.

입출력 ex)

arr return
[1,2,3,4] 2.5
[5,5] 5

코드리뷰

public class Solution8 {

    public static double solution(int[] arr) {
        double answer = 0;  //결과를 저장할 double 변수
        for(int i = 0; i < arr.length; i++) {  // i < arr의 길이(4);
            answer += arr[i];                  // answer = answer + arr[i]
        }
        return answer / arr.length;     //answer에 담긴 값 리턴, 나누는 수는 arr의 length만큼 - 10/s.legth
    }
    public static void main(String[] args) {
        double result = solution(new int[]{1,2,3,4});
        System.out.print(result);
    }
}

 

값을 소수점까지 표현해야 하니 변수 answer를 double로 선언해준다.

arr {1,2,3,4} 일때로 for문을 살펴보면

arr배열안의 마지막까지 answer값에 더해준다. 1+2+3+4=10

answer 값 10을 return할 때 arr배열의 길이 4를 나눠준다.

그럼 배열 arr의 평균값 2.5가 return된다.

 

개념획득

 

for문의 조건식  i <arr.length 는 그 배열의 숫자들을 차례대로  마지막 배열 숫자까지 반복된다.

answer += arr[i]  : answer에 arr의 배열 안의 숫자들을 모두 더해준다.

 

 

2022/09/27

 

  • 핸드폰 번호 가리기

1)문제 설명

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

2)제한 조건
  • phone_number는 길이 4 이상, 20이하인 문자열입니다.
 
입출력 ex)
phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"

코드리뷰

class Solution9 {
    public static String solution(String p) {
        String answer = "";
        for(int i = 0; i < (p.length()-4); i++) {  //s 배열의 맨 뒤 4자리의 수를 제외한 나머지 문자를 *로 바꿔주기 위해
            answer += "*";		      // 반복문을 돌리면서 비어있는 answer 변수에 *를 넣어준다.
        }
            answer += p.substring(p.length() -4);  //answer = answer+문자열 맨 뒤 4자리

        return answer;
    }
    public static void main(String[] args) {
        String p = solution("01033334444");
        System.out.print(p);
    }
}

 

 

 

개념획득