어흥
[프로그래머스] 삼각 달팽이 (C++) 본문
728x90
반응형
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/68645
1. 주의할 점
- 어떤 방식으로 접근할건지 생각한다
2. 구현
- 삼각달팽이가 하삼각행렬이라고 생각한다
- 아래,오른쪽,왼쪽위 대각선 총 3개의 방향을 규칙적으로 움직인다 → dx,dy를 통해 나타낸다
- 각 방향으로 움직이는 정도가 n-1, n-2, n-3, ...., 1, 0 만큼 움직이므로 이를 While문을 통해 구현
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int arr[1000][1000];
int dx[3] = {0,1,-1};
int dy[3] = {1,0,-1};
vector<int> solution(int n) {
vector<int> answer;
int x=0,y=0,idx=1,dir=0,num=n;
while(n){
arr[y][x]=idx++;
for(int i=0;i<n-1;i++){
y+=dy[dir];
x+=dx[dir];
arr[y][x]=idx++;
}
dir = (dir+1)%3;
y+=dy[dir];
x+=dx[dir];
n--;
}
for(int i=0;i<num;i++)
for(int j=0;j<=i;j++)
answer.push_back(arr[i][j]);
return answer;
}
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 교점에 별 만들기 (C++) (0) | 2021.10.13 |
---|---|
[프로그래머스] 전력망을 둘로 나누기 (C++) (0) | 2021.10.06 |
[프로그래머스] 오픈채팅방 (C++) (0) | 2021.09.28 |
[프로그래머스] 순위 검색 (C++) (0) | 2021.09.10 |
[프로그래머스] 메뉴 리뉴얼 (C++) (0) | 2021.09.10 |
Comments