그냥 for문으로 일치하는지 하나씩 확인하려다 c++에 배열의 원소가 일치하는지 알려주는게 있을 것 같아 검색해봤다.
보니깐 어떤 사람이 set이란걸 쓰라고 했다. set은 == 연산자를 통해 원소가 일치하는지(오!) 알려주는데 대신 얘는 순서를 상관 안 한다. 그래서 좀 더 검색해보니 vector가 순서가 있는 set 인것 같았다. 그래서 이 문제는 vector를 사용해봤다.
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector <int> ascending(8);
vector <int> descending(8);
int num;
vector <int> input(8);
for(int i = 1; i <= 8; i++)
ascending.push_back(i);
for(int i = 8; i >= 1; i--)
descending.push_back(i);
for(int i = 1; i <= 8; i++){
scanf("%d", &num);
input.push_back(num);
}
if(ascending == input)
printf("ascending");
else if (descending == input)
printf("descending");
else
printf("mixed");
return 0;
}
vector 3개를 만들어 하나는 ascending용으로 하나는 descending용으로, 나머지 하나는 입력을 받기 위해 썼다. 코드는 간단하다. 그냥 벡터를 초기화하고 일치하는지 확인했다. 편하네
알고보니 이런 방식으로도 초기화가 가능하다! (깔끔해)
vector<int> ascending = { 1, 2, 3, 4, 5, 6, 7, 8 };
vector<int> descending = { 8, 7, 6, 5, 4, 3, 2, 1 };
으악ㅋㅋㅋ 그리고 내가 생각한대로 vector에 안 들어갔다ㅋㅋㅋ 벡알못인거 티난다.
vector<int> ascending(8);
이렇게하면 ascending = {0, 0, 0, 0, 0, 0, 0, 0} 0으로 초기화 된 크기 8의 배열이 만들어진다.
ascending.push_back(i);
다음으로 push_back을 하면 배열의 바로 뒤에 숫자를 붙여준다
ascending = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8 } // 16길이 배열
descending = { 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 6, 5, 4, 3, 2, 1 } // 16길이 배열
input = { 0, 0, 0, 0, 0, 0, 0, 0, ... 입력값 8개 }
결과적으로 이렇게 생겼다!
이렇게 넣었다는 걸 알았을 때 엄청 웃겼다ㅋㅋㅋ 아 저게 저렇게 들어가는구나!
백터는 다음에 다시 정리해야겠다ㅋㅋ
'백준' 카테고리의 다른 글
2309 일곱 난쟁이 (0) | 2019.10.08 |
---|---|
2292 벌집 (0) | 2019.10.07 |
11720 숫자의 합 (0) | 2019.10.06 |
1924 2007년 (0) | 2019.10.06 |
1152 단어의 개수 (0) | 2019.10.06 |