프로그래밍 언어/Programmers
Programmers 월간 코드 챌린지 시즌1 9월 문제 삼각 달팽이 with Java and Python
활짝 웃자
2020. 9. 20. 22:23
안녕하세요 !
이번 포스팅은 올려도 되는지 모르겠는데 이미 공개가 되었다고 하니까 올려봅니다! (문제 되면 지우도록 하겠습니다.)
프로그래머스 문제 찾아보다가 월간 코드 챌린지라는게 있어서 풀어봤어요.
사용 가능한 프로그래밍 언어는 굉장히 제한적입니다.
이번에도 문제는 프로그래머스에 있으니 직접 찾아보시고, 바로 풀이만 진행할게요! 해설 없어요!
* 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 |
위 코드의 결과는 직접 확인해 보세요 ~!