반응형
01. 문제내용
https://school.programmers.co.kr/learn/courses/30/lessons/68645
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
02. 문제풀이로 배운점
- 삼각형에 집중해서 문제를 풀이하려고 하기보다 이중배열을 사용해서 문제를 접근하면 훨씬 빠르게 계산할 수 있음
- 반복되는 것을 줄이는 것도 좋은 방법 중 하나!
03. 문제풀이 방법
class Solution {
public int[] solution(int n) {
int[][] triangle = new int[n][n];
int v = 1;
int x = 0;
int y = 0;
while(true){
//아래쪽으로 이동!
while(true){
triangle[y][x] = v++;
if(y + 1 == n || triangle[y+1][x] != 0) break;
y += 1;
}
if(x + 1 == n || triangle[y][x+1] != 0) break;
x += 1;
//오른쪽으로 이동
while(true){
triangle[y][x] = v++;
if(x + 1 == n || triangle[y][x+1] != 0) break;
x += 1;
}
if(triangle[y - 1][x - 1] != 0) break;
x -= 1;
y -= 1;
//왼쪽 위로 이동
while(true){
triangle[y][x] = v++;
if(triangle[y-1][x -1] != 0) break;
x -= 1;
y -= 1;
}
if( y + 1 == n || triangle[y + 1][x] != 0) break;
y += 1;
}
int[] result = new int[v-1];
int index = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j <= i; j++){
result[index++] = triangle[i][j];
}
}
return result;
}
}
반응형
'Algorithm' 카테고리의 다른 글
[Algorithm]3진법 뒤집기(2.87ms -> 0.05ms) (0) | 2023.06.11 |
---|---|
[Algorithm]Two Sum (63ms -> 2ms 개선) (0) | 2023.06.10 |
[Algorithm]교점에 별만들기(Java) (0) | 2023.05.23 |
[WIL]🙈PINTOS_KAIST : Project 3. VIRTUAL MEMORY (1) : HASH TABLE 🙉 (0) | 2022.12.06 |
[Algorithm] 백준1874. 스택 수열 (0) | 2022.12.04 |
댓글