안녕하세요 !
이번 포스팅은 올려도 되는지 모르겠는데 이미 공개가 되었다고 하니까 올려봅니다! (문제 되면 지우도록 하겠습니다.)
프로그래머스 문제 찾아보다가 월간 코드 챌린지라는게 있어서 풀어봤어요.
사용 가능한 프로그래밍 언어는 굉장히 제한적입니다.
이번에도 문제는 프로그래머스에 있으니 직접 찾아보시고, 바로 풀이만 진행할게요! 해설 없어요!
* 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 |
위 코드의 결과는 직접 확인해 보세요 ~!
'프로그래밍 언어 > Programmers' 카테고리의 다른 글
Programmers Level2 소수 만들기 with Java and Python (0) | 2020.09.12 |
---|---|
Programmers Level2 튜플 with Java and Python (0) | 2020.08.30 |
Programmers Level2 소수찾기 with Java and Python (0) | 2020.08.29 |