본문 바로가기
카테고리 없음

[프로그래머스] JAVA 코딩테스트(6~10)

by 소년수 2022. 7. 21.

프로그래머스 코딩테스트 문제 6~10번문제를 코드리뷰해보겠다.

6번문제

코드리뷰:

class Solution {
    public int solution(int[] numbers) {
        int sum = 45;
        for (int i : numbers) {
            sum -= i;
        }
        return sum;
    }
}

비교적 쉬운 문제다.
1.우선 numbers의 범위는 1~9다.
2.입력칸 배열 numbers에 없는 정수만 다 더해서 값을 return해준다.
3.1~9 의 합(sum)은 45.
4.반복문을 돌려 int i 값에 numbers에 대입한다
5.sum의 값은 sum에서 i를 뺀값.

7번문제

코드리뷰

class Solution {
    public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0;
        for (int i=0; i<signs.length; i++)
            answer += absolutes[i] * (signs[i]? 1: -1);
        return answer;
    }
}

1.배열의 종류가 두개이다.
2. 하나는 정수형 배열, 하나는 논리형 배열.
3.삼항연산자를 사용해 비교적 간단하게 해결가능하다.(삼항연산자 (조건문) ? 참 : 거짓)

if else로도 당연히 해결가능하다.

class Solution {
    public int solution(int[] absolutes, boolean[] signs) {
        int answer = 0;
        for (int i = 0; i < absolutes.length; i++) {
            if (signs[i]) {
                answer += absolutes[i];
            } else {
                answer -= absolutes[i];
            }
        }
        return answer;
    }
}

문제 파악을 한 후 어떻게 풀지를 빠르게 판단하는 능력을 길러야겠다.

8번문제

코드리뷰

class Solution {
    public double solution(int[] arr) {
        double answer = 0;
        int total = 0;
        
        for(int i=0;i<arr.length;i++) {
            total += arr[i];
        }
        
        answer = (double)total / arr.length;
        
        return answer;
    }
}

1.평균은 배열안의 값을 다 더한후 배열의 개수로 나눠줘야 한다.
2.모두 더한값 total을 선언,
3.for문으로 배열의 개수를 점점 늘린다는 조건을 써준다.
4.total의 값은 arr[i]와 total을 더한 값
5.answer의 값은 total의 값을 arr.length 배열 갯수로 나눠준다.
6.선언하면 끝

9번문제

코드리뷰

class Solution {
  public String solution(String phone_number) {
      String answer = "";
      for(int i = 0; i < phone_number.length(); i++){
         if(i < phone_number.length()-4){
             answer += "*";
         }
         else{
             answer += phone_number.charAt(i);
         }
      }
      return answer;
  }
}

1.중요한 조건은 전화번호 맨뒷자리 4자리를 제외한 모든 숫자를 *로 바꿔야된다는것.
2.고로 if문에는 끝에 네자리가 닿을때 for문이 멈춘다.

10번문제

코드리뷰

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        for(int i=0 ; i<arr1.length ; i++) {
            for(int j=0 ; j<arr1[0].length ; j++) {
                arr1[i][j] += arr2[i][j];
            }
        }
        return arr1;
    }
}

1.비교적 쉬운문제다.
2.같은 행렬의 같은 행 같은 열값만 더한 결과만 도출하면된다.
3.2중행렬이니 arr1 arr2 모두 int[][]로 선언해준다.
4.나머지는 쉬움

댓글