티스토리 뷰
title: "삼각 달팽이"
category: 프로그래머스[Level-2]
tags: [C++, JavaScript, 프로그래머스]
date: "2021-01-22"
문제 링크
C++
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(int n) {
vector<int> answer;
vector<vector<int>> vv;
for(int i=0; i<n; i++){
// 초기화
vector<int> v(n, 0);
vv.push_back(v);
}
int option = 0;
int count = 0;
int row = -1; // for. ++row
int col = 0;
for(int i=n; i>0; i--){
if(option%3==0){
// 내려오기
for(int j=0; j<i; j++){
vv[++row][col] = ++count;
}
}
else if(option%3==1){
// 옆으로 가기
for(int j=0; j<i; j++){
vv[row][++col] = ++count;
}
}
else if(option%3==2){
// 대각선 올라가기
for(int j=0; j<i; j++){
vv[--row][--col] = ++count;
}
}
option++;
}
// 삼각 달팽이
for(int i=0; i<n; i++){
for(int j=0; j<=i; j++){
answer.push_back(vv[i][j]);
}
}
return answer;
}
JavaScript
function solution(n) {
var answer = [];
let vec = []; // 저장용
for (let i = 0; i < n; i++) {
// 초기화
vec.push(Array.from({ length: n }, () => 0));
}
let option = 0;
let count = 0;
let row = -1; // for. ++row
let col = 0;
for (let i = n; i > 0; i--) {
if (option % 3 === 0) {
// 내려가기
for (let j = 0; j < i; j++) {
vec[++row][col] = ++count;
}
} else if (option % 3 === 1) {
// 옆으로 가기(->)
for (let j = 0; j < i; j++) {
vec[row][++col] = ++count;
}
} else if (option % 3 === 2) {
// 올라가기
for (let j = 0; j < i; j++) {
vec[--row][--col] = ++count;
}
}
option++;
}
// 삼각 달팽이
for (let i = 0; i < n; i++) {
for (let j = 0; j <= i; j++) {
answer.push(vec[i][j]);
}
}
return answer;
}
728x90
반응형
'Programmers Solutions > Level-2' 카테고리의 다른 글
[프로그래머스] 괄호 변환 (0) | 2021.02.01 |
---|---|
[프로그래머스] 큰 수 만들기 (0) | 2021.02.01 |
[프로그래머스] 문자열 압축 (0) | 2021.02.01 |
[프로그래머스] 프린터 (0) | 2021.01.31 |
[프로그래머스] 124 나라의 숫자 (0) | 2021.01.31 |
댓글