일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스포티파이
- MYSQL
- linux
- spring boot
- Baekjoon
- 파이썬
- modern c++
- SECS
- Gem
- SWEA
- programmers
- spotify
- regression
- Spring
- c
- Spring JPA
- 백준
- Spotify Api
- SECS-II
- CS
- SECS/GEM
- 자바
- 프로그래머스
- 회원가입
- C++
- java
- python
- SW Expert Academy
- 회귀
- Computer Science
Archives
- Today
- Total
비버놀로지
[Programmers 프로그래머스] 68645 삼각 달팽이 (C/C++) 본문
728x90
programmers.co.kr/learn/courses/30/lessons/68645
문제 설명
정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 1,000 이하입니다.
입출력 예
n | result |
4 | [1,2,9,3,10,8,4,5,6,7] |
5 | [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] |
6 | [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] |
while과 for문을 이용을 해서 문제를 해결했다.
2차원 배열에 먼저 해당하는 값을 넣어주고, 결과를 answer에 담아 주었다.
3가지 방식으로 배열에 담아준다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int n)
{
vector<int> answer;
int arr[n][n]; //결과를 담아줄 배열
int num = 0;
for (size_t i = 1; i <= n; i++) //최대값을 구해준다.
{
num += i;
}
int cnt = 0;
int x1 = 0; //x축 시작
int y1 = 0; //y축 시작
int x2 = n; //x축 마지막
int y2 = n; //y축 마지막
int number = 1; //배열에 넣어줄 값
while (cnt < n)
{
for (size_t i = x1; i < x2; i++) //세로방향으로 배열에 넣어준다.
{
arr[i][y1] = number++;
}
x1++;
y1++;
cnt++;
if (cnt == n)
{
break;
}
for (size_t j = y1; j < y2; j++) //가로방향으로 배열에 넣어준다.
{
arr[x2 - 1][j] = number++;
}
x2--;
cnt++;
y2--;
if (cnt == n)
{
break;
}
int temp = y2 - 1;
for (size_t i = x2 - 1; i >= x1; i--) //대각선 위로 배열에 값을 넣어준다.
{
arr[i][temp--] = number++;
}
x1++;
y2--;
cnt++;
if (cnt == n)
{
break;
}
}
for (size_t i = 0; i < n; i++)
{
for (size_t j = 0; j <= i; j++)
{
answer.push_back(arr[i][j]);
}
}
return answer;
}
728x90
'ALGORITM > JAVA' 카테고리의 다른 글
[Programmers 프로그래머스] 60057 문자열 압축 (java) (0) | 2021.03.30 |
---|---|
[Programmers 프로그래머스] 1829 카카오프렌즈 컬러링북 (java) (0) | 2021.03.28 |
[Programmers 프로그래머스] 12899 124 나라의 숫자 (java) (0) | 2021.03.28 |
[Programmers 프로그래머스] 42584 주식가격 (C/C++) (0) | 2021.03.28 |
[BAEKJOON 백준] 10869 사칙연산 (C/C++) (0) | 2021.03.27 |
Comments