[프로그래머스 C++] 삼각 달팽이
[프로그래머스 C++] 삼각 달팽이
https://school.programmers.co.kr/learn/courses/30/lessons/68645
해결방안
시뮬레이션, 구현
코드
#include <string>
#include <vector>
using namespace std;
int ch[1001][1001];
void Tri(int y, int x, int n) // (y, x)는 시작위치
{
int val = ch[y][x];
for (int i = 0; i < n; i++) // 세로 방향
ch[y + i][x] = val++;
for (int i = 1; i < n; i++) // 밑 줄 가로 방향
ch[y + n - 1][x + i] = val++;
for (int i = 1; i < n - 1; i++) // 대각선 방향
ch[y + n - 1 - i][x + n - 1 - i] = val++;
// 만약 (y+2, x+1) 위치의 값이 0이라면, 그 위치에 (y+1, x+1) 위치의 값에 1을 더한 값을 저장
if (ch[y + 2][x + 1] == 0)
ch[y + 2][x + 1] = ch[y + 1][x + 1] + 1;
}
vector<int> solution(int n) {
int size = n;
ch[0][0] = 1; // 배열의 시작 위치인 (0, 0)에 1을 저장
int y = 0, x = 0;
for (int i = n; i > 0; i -= 3) {
Tri(y, x, i);
y += 2;
x += 1;
}
vector<int> answer;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(ch[i][j] != 0)
answer.push_back(ch[i][j]);
}
}
return answer;
}
'⭐ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] 연속된 부분 수열의 합 (0) | 2023.11.15 |
---|---|
[프로그래머스 C++] 두 큐 합 같게 만들기 (0) | 2023.11.14 |
[프로그래머스 C++] 다리를 지나는 트럭 (0) | 2023.11.10 |
[프로그래머스 C++] 큰 수 만들기 (1) | 2023.11.09 |
[프로그래머스 C++] 소수 찾기 (0) | 2023.11.08 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 C++] 연속된 부분 수열의 합
[프로그래머스 C++] 연속된 부분 수열의 합
2023.11.15 -
[프로그래머스 C++] 두 큐 합 같게 만들기
[프로그래머스 C++] 두 큐 합 같게 만들기
2023.11.14 -
[프로그래머스 C++] 다리를 지나는 트럭
[프로그래머스 C++] 다리를 지나는 트럭
2023.11.10 -
[프로그래머스 C++] 큰 수 만들기
[프로그래머스 C++] 큰 수 만들기
2023.11.09