반응형
0) 제목
Hackerrank 의 C++>Introduction 부분의 Variable Sized Arrays 문제입니다.
C++ 를 이용하여 풀었습니다.
C를 이용한 배열 포인터, 포인터배열에 대한 설명은
여기 있습니다.
1) 문제설명
동적할당을 이용하여 배열에 변수를 넣고 그 변수를 출력하는 문제입니다.
초기에 n, q를 받는다.
n 개의 배열을 만들 것인데 각 배열마다 배열의 크기가 다르다.
그 배열의 크기를 맨 앞에 받고 그것의 크기만큼 인자를 받습니다.
배열을 다 채우고
출력할 쿼리를 받는다 순서대로 j, k 를 받는데
j 번째 배열에서 k 번쨰 index를 출력한다.
2) 풀이과정
각 배열 마다 배열의 크기가 다르게 주어지고, 처음에 배열이 몇개 주어질지 모르기 때문에.
동적할당을 이용해서 2차원 배열을 만드는 방식을 생각했습니다.
이런식으로 2차원 배열의 열 마다 1차원 배열의 주소를 가리킵니다.
3) 함수설명
함수는 따로 없어서 주석을 달았습니다.
4) 코드
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 32 33 34 35 36 37 38 39 | #include <iostream> using namespace std; int main() { int n, q; // n : 만들 배열의 갯수 // q : 출력할 query의 갯수. int j, k; // j, k 출력할 데이터의 좌표. int data; // 배열에 입력 받는 데이터 cin >> n; cin >> q; //2차원 배열 동적할당 중, 이중 포인터를 이용하여 받을 //1차원 배열의 갯수(n)만큼 동적할당. int **arr = new int*[n]; //2차원 배열 동적할당 중, //각 1차원 배열마다 k사이즈만큼 동적할당. for(int i=0; i<n ;i++){ cin >> k; arr[i] = new int[k]; for(j=0; j<k; j++){ cin >> data; arr[i][j] = data; } } //출력. for(int i=0; i<q;i++){ cin >> j; cin >> k; cout << arr[j][k] << endl; } //메모리 동적할당 해제. for(int i=0; i<n; i++){ delete []arr[i]; } delete []arr; return 0; } | cs |
5) 인증
경로 : Dashboard>C++>Introduction>Variable Sized Arrays
출처 : [HackerRank] https://www.hackerrank.com/challenges/variable-sized-arrays
더 나은 코드로 보완 할 곳이 있으면 말씀해주세요.
부족한 코드 많은 지적 부탁드립니다.
C하다가 C++ 하니까 헷갈리네요..
C++ 은 C 보다 더 많이 부족합니다.
반응형
'<알고리즘 문제풀이&연습> > [C++] 백준, 프로그래머스 등등' 카테고리의 다른 글
[C 자료구조] Stack - Simple Text Editor (0) | 2017.07.14 |
---|---|
[C 자료구조] Array - Left Rotation (0) | 2017.07.13 |
[C 자료구조] Tree - Is This a Binary Search Tree? (0) | 2017.07.11 |
[C++ 상속/virtual] Virtual Functions (가상함수) (0) | 2017.07.10 |
[C 자료구조] Stack - Balanced Brackets (0) | 2017.07.07 |
[C 자료구조] Linked Lists -Reverse a doubly linked list (1) | 2017.07.06 |
[C 자료구조] Heap - QHEAP1 (0) | 2017.07.05 |
[C 자료구조] Tree - Level Order Traversal (0) | 2017.07.05 |