카테고리 없음

[프로그래밍] 프로그래머스 예제문제 풀어보기 <음양 더하기> 외2건 (성공)

mabb 2022. 3. 30. 11:45
반응형

 

1. 프로그래머스 레벨1 <음양더하기>
: 정수가 담긴 배열 absolutes와 불린이 담긴 signs
 signs가 true면 더하고 false면 빼는 문제.

출처: 프로그래머스

 아주아주 간단한 문제. 
생각해보니 포스팅을 위해 자주 사용하는 
컬러스크립터 사이트가 참 괜찮은 것 같다.
저런 웹사이트를 만들어서 애드센스를 달면 행복할 것 같다.

 

Color Scripter

Simple & Flexible Syntax HighLighter

colorscripter.com

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
    public int solution(int[] absolutes, boolean[] signs) {
        
        int answer = 0;
        for(int i =0; i<absolutes.length;i++){
            if(signs[i] == true){
                answer += absolutes[i];
            }
            if(signs[i]==false){
                answer -= absolutes[i];
            }       
        }
 
        return answer;
    }
}
cs

 

2.프로그래머스 레벨1 <내적>
: 두 정수배열의 값을 0번 인덱스부터 각각 곱한 합계 구하기.

 

1
2
3
4
5
6
7
8
9
class Solution {
    public int solution(int[] a, int[] b) {
        int answer = 0;        
        for(int i =0; i<a.length ; i++){
            answer+= a[i] * b[i];            
        }        
        return answer;
    }
}
cs

 

3. 프로그래머스 레벨1 <소수 만들기>
: 3개이상 50개 이하의 숫자가 담긴 nums에서  3개를 뽑아 더한 합이 소수인 경우의 수를 구하는 문제

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
class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        int len = nums.length;
        
        for(int i =0 ; i < len; i++){
            for(int k = i+1; k < len ;k++ ){
                for(int j = k+1; j < len ; j++){
                    int Sum = nums[i] +nums[k] +nums[j];
                    boolean tempCheck = false;
                    int sosuCheck = 0;
                    System.out.println(Sum);
                    for(int l = 1; l<= Sum ; l++){
                        if(Sum%l ==0){
                            sosuCheck += l ;
                        }
                    }
                  
                    if(sosuCheck == Sum+1){
                        answer ++;
                    }                  
                }
            }         
        }
 
 
 
        return answer;
    }
}
cs

 

for문 덕지덕지.
nCr을  for문을 덕지덕지하여 만듦.
소수인지 판단하고 소수일 경우 answer에 값을 더해줌.

소수인지 판단하는 방법은
-판단하는 수를 n이라할 때 n을 1부터 n까지의 수로 나눠보았을 때 나머지가 0이 되는 모든 분모를 더하고
그 더한 값이 n+1인 경우
-n을 1부터 n까지의 수로 나눠보았을 때 나머지가 0이 되는 횟수가 2번이어도 소수.



수학공식)
n개의 수를 일렬로 늘어놓는 경우의 수 -> n펙토리얼 (n!) // 1부터 n까지의 모든 정수의 곱.
n*(n-1)*(n-2)*.....*1

n개의 수에서 r개를 뽑아 순서있게 늘어놓는 경우의 수  -> nPr
nPr = n!/(n-r)!

n개의 수에서 r개를 뽑는 경우의 수 -> nCr
nCr=nPr/r!

 

반응형