안녕하세요 !

 

이번 포스팅은 올려도 되는지 모르겠는데 이미 공개가 되었다고 하니까 올려봅니다! (문제 되면 지우도록 하겠습니다.)

 

프로그래머스 문제 찾아보다가 월간 코드 챌린지라는게 있어서 풀어봤어요.

 

사용 가능한 프로그래밍 언어는 굉장히 제한적입니다.

 

이번에도 문제는 프로그래머스에 있으니 직접 찾아보시고, 바로 풀이만 진행할게요! 해설 없어요!

 

* Java / Python3으로 진행 하였습니다.

 

 

1. Solved with Java

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
class Solution {
    private static int num = 0;
    public int[] solution(int n) {
        int[][] triangle = triangleList(n);
        int[] answer = new int[num];
        int len = 0;
        for(int[] arrEl:triangle) {
            for(int el:arrEl) {
                answer[len] = el;
                len++;
            }
        }
        return answer;
    }
    
    private static int[][] triangleList(int n){
        int[][] triangle = new int[n][];
        for(int i=1; i<n+1; i++){
            num+=i;
            triangle[i-1= new int[i];
        }
        int count=0, idx=1;
        int minHeight=0, maxHeight=n, minWidth=0, maxWidth=n;
        while (count<=num) {
            int i=minHeight, j=minWidth;
            for(i=minHeight; i<maxHeight; i++) {
                count++;
                if (count==num) {
                    triangle[i][j] = count;
                    return triangle;
                }
                triangle[i][j] = count;
            }
            minWidth++;
            i--;
            for(j=minWidth; j<maxWidth; j++) {
                count++;
                if(count==num) {
                    triangle[i][j] = count;
                    return triangle;
                }
                triangle[i][j] = count;
            }
            maxHeight -= 2;
            j = triangle[i-1].length - idx;
            for(i=maxHeight; i>minHeight; i--) {
                count++;
                if (count==num) {
                    triangle[i][j] = count;
                    return triangle;
                }
                triangle[i][j] = count;
                j--;
            }
            maxHeight++;
            minHeight += 2;
            maxWidth -= 2;
            idx++;
        }
        return triangle;
    }
}
cs

 

 

2. Solved with Python3

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
def solution(n):
    answer = appendEl(triangleList(n))
    return answer
 
def triangleList(n):
    triangle = []
    for i in range(1, n+1):
        triangle.append([0 for _ in range(i)])
    num = sum(range(1, n+1))
    count = 0
    minHeight = 0
    maxHeight = n
    minWidth = 0
    maxWidth = n
    idx = 1
    while count <= num:
        i = minHeight
        j = minWidth
        for i in range(minHeight, maxHeight):
            count += 1
            if count == num:
                triangle[i][j] = count
                return triangle
            triangle[i][j] = count
        minWidth += 1
        for j in range(minWidth, maxWidth):
            count += 1
            if count == num:
                triangle[i][j] = count
                return triangle
            triangle[i][j] = count
        maxHeight -= 2
        j = len(triangle[i-1])-idx
        for i in range(maxHeight, minHeight, -1):
            count += 1
            if count == num:
                triangle[i][j] = count
                return triangle
            triangle[i][j] = count
            j -= 1
        maxHeight += 1
        minHeight += 2
        maxWidth -= 2
        idx += 1
    return triangle
 
def appendEl(triangleList):
    result = []
    for i in triangleList:
        result += i
    return result
cs

 

 

 

 

위 코드의 결과는 직접 확인해 보세요 ~!

안녕하세요 !

 

9월 부터 연말까지 바빠져서

지금 시간이 조금 나서 올리게 되었습니다!

 

이번에도 ~ Programmers 문제 입니다.

 

저번에는 소수를 찾는 거였다면

이번 포스팅은 소수를 만드는 거에요.

 

저번 포스팅들과 마찬가지로 문제는 Programmers에 있으니 직접 검색해 보세요 ~!

 

이번에도 기록용 입니다

별다른 풀이는 하지 않을게요!

 

1. Solved with Java

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
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.Arrays;
import java.lang.Math;
 
class Solution {
    private static int answer = 0;
    
    public int solution(int[] nums) {
        int[] comArr = new int[3];
        combination(comArr, nums.length300, nums);
 
        return answer;
    }
    
    private static void combination(int[] comArr, int n, int r,
                                   int index, int target, int[] nums){
        if (r==0){
            if(checkPrime(Arrays.stream(comArr).sum())){
                answer++;
            }
            return;
        }
        if(target==n) return;
        
        comArr[index] = nums[target];
        combination(comArr, n, r-1, index+1, target+1, nums);
        combination(comArr, n, r, index, target+1, nums);
    }
    
    private static boolean checkPrime(int check) {
        int count=0;
        double checkSqrt = Math.sqrt(check);
        double checkZero = checkSqrt - (int)checkSqrt;
        if(checkZero!=0.0) {
            for(int i=1; i<(int)checkSqrt+1; i++) {
                if(check%i==0) {
                    count++;
                }
            }
            count++;
        }
        if(count==2) {
            return true;
        } else {
            return false;
        }
    }
}
cs

 

 

 

2. Solved with Python3 (Python2 버전은 Programmers에서 해당 문제에서는 풀이 언어로 선택 할 수 없어서 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
31
32
33
34
35
36
37
38
39
40
41
42
43
from itertools import combinations
from math import sqrt
 
def solution(nums):
    return solve(nums)
 
def solve(combLi):
    primeCount = 0
    for i in combiList(combLi):
        if primeCheck(sum(i)):
            primeCount+=1
        else:
            pass
    
    return primeCount
 
def primeCheck(num):
    numSqrt = sqrt(num)
    checkSqrt = int(numSqrt)+1
    checkZero = numSqrt - int(numSqrt)
    count = 0
    if sqrtCheck(checkZero):
        for i in range(1, checkSqrt):
            if(num%i==0):
                count+=1
            else:
                pass
        count+=1
        if count==2:
            return True
        else:
            return False
    else:
        return False
 
def combiList(nums):
    return list(combinations(nums, 3))
 
def sqrtCheck(checkZero):
    if checkZero!=0.0:
        return True
    else:
        return False
cs

 

 

 

 

 

위 코드의 결과는 직접 확인해 보세요 ~!

 

 

 

 

 

 

옷 사러 가야되는데...

같은 옷이어도 가격이 틀리니

이곳 저곳 발품을 팔아야 되는데!

그것도 주말에!

주말에 비오지 말아라 ~~~

'etc > 일상' 카테고리의 다른 글

이번 여름은 정말이지..  (0) 2020.08.03

+ Recent posts