반응형

배열 9

[C언어] 배열, 문자열 슬라이싱 구현 예제

파이썬 등의 일부 프로그래밍 언어에서는 다음과 같이 특정 위치 부분을 추출하는 "슬라이싱"이라는 기능을 제공합니다. list_a = [1, 3, 5, 7, 9] str_a = "hello world!" # 파이썬 슬라이싱 예시 print(list_a[1:4]) # [3, 5, 7] print(str_a[2:6]) # "llo " 그렇다면 C언어에서도 배열이나 문자열에 대하여 위와 같은 슬라이싱을 적용할 수 있을까요? 결론부터 말씀드리면, 포인터 및 동적할당을 통하여 간접적인 방법으로는 가능합니다! 여기서는 정수 배열 및 문자열에 대하여 슬라이싱 기능을 하는 함수를 구현해보도록 하겠습니다. C언어 배열 슬라이싱 구현 arr_slicing(arr, start, end) 형태로 int 자료형 배열 arr, 시..

C & C++ 2022.09.23

[C언어] 배열 내 특정 값 포함 여부 / 원소 위치 인덱스 찾기 구현

C언어 array 원소 존재 여부, 인덱스 번호 탐색 예제 C언어에서 배열 내에 특정 원소가 포함되어 있는지 여부를 탐색하거나 값이 들어있는 위치의 인덱스 번호를 가져오는 방법의 예시를 다루어 보겠습니다. 배열 안에 값이 포함되어 있는지 여부 반환 C언어에서 배열 내에 특정 원소가 들어있는지에 대한 정보를 확인하기 위해서는 배열, 배열 크기 그리고 찾기를 원하는 값을 input으로 받은 뒤, for문을 통해서 값 일치 여부를 일일이 확인하는 식으로 구현해야 합니다. 정수 배열 arr에 대하여 val 값의 여부를 찾는 isin 함수의 구현 예시는 다음과 같습니다. // input : 배열 arr, 배열 크기 size 그리고 찾을 값 val int isin(int* arr, int size, int val)..

C & C++ 2022.08.14

[Numpy] 파이썬 넘파이 배열 원소 삭제 : np.delete 사용법

Python numpy delete 함수 사용 방법 예제 파이썬의 넘파이 모듈에서 배열의 원하는 위치와 축 방향을 지정하여 원소를 삭제할 수 있는 np.delete 함수의 사용법을 정리해보도록 하겠습니다. (참고로 이 글은 넘파이의 해당 함수 공식 문서 내용을 기반으로 작성되었습니다.) 기본적으로 delete 함수의 인자는 np.delete(배열, 인덱스, 축) 형태로 구성됩니다. 아래와 같은 2차원 배열 arr를 가정하여 값 제거를 진행해보도록 하겠습니다. import numpy as np arr = np.array([[1, 3, 5], [2, 4, 6], [3, 5, 7]]) np.delete axis별 값 제거 예시 먼저, axis = 0 방향으로 1번 인덱스(두 번째) 위치의 값들을 삭제한 예시는..

Python/Numpy 2022.07.17

[C++] 문자열 string vs char 배열 선언 방식 비교

C++ 문자열 string vs char array 차이 비교 예제 C++에서 문자열을 string으로 선언하는 경우와 char 배열로 선언하는 경우의 예시 코드를 토대로 두 경우의 차이를 비교해보도록 하겠습니다. string 선언 방식의 문자열 C++에서는 헤더 파일을 포함하게 된다면 string 타입으로 문자열을 선언하여 매우 편리하게 다룰 수 있게 됩니다. 해당 타입으로 문자열을 선언 뒤, 일부 글자를 수정해보고 문자열의 길이를 출력해보는 예시 코드는 아래와 같습니다. #include #include using namespace std; int main() { // 문자열 선언 string a = "hello!\n"; cout

C & C++ 2022.06.13

[C언어] 정수 배열 및 문자열에서 중복 원소 찾기, 중복 제거 방법

C언어 배열 중복 탐색 및 제거 예제 C언어의 정수가 저장된 배열 혹은 문자열에서 2번 이상 등장한 값들의 목록을 찾는 방법과 중복을 제거하여 고유값만 남기는 방법에 대해서 다루어보도록 하겠습니다. 숫자(정수) 배열 내 중복 원소 찾기 가정 : 배열 a 내에는 0~n까지의 범위 내에서 정수가 등장할 수 있습니다. 풀이법 : n+1 사이즈의 등장 횟수 배열 check를 선언 후, a 배열의 원소를 순회하며 각 인덱스에 해당 숫자의 등장 횟수를 카운팅하고, 2 이상인 인덱스들만을 모아서 반환합니다. 0~4 범위에서 정수가 등장할 수 있는 경우의 간단한 예제에 대한 원리는 다음 그림처럼 표현할 수 있습니다. 해당 예제의 실제 C언어 구현 코드는 아래와 같습니다.(각 줄 코드의 설명은 주석을 참고하세요!) #i..

C & C++ 2022.06.06

[C언어] 2차원 배열 선언, 값 접근/수정/출력 방법 및 문자열 배열

C언어 2차원 array 사용 방법 예제 이번 글에서는 C언어에서 2차원 배열을 선언하는 방법과 주요 특징을 먼저 살펴본 뒤, 값에 접근, 수정 및 출력하는 과정을 다루어보고 2차원 배열의 특수 케이스인 문자열(string) 배열에 대해서까지 말씀드려보도록 하겠습니다. 2차원 배열 선언, 특징 C언어에서 2차원 이상의 다차원 배열 선언 방법은 자료형 변수명 [1차 배열 크기][2차 배열 크기]... = {값} 형식으로 코드를 작성해주시면 됩니다. 아래는 2 * 3 크기의 int 2차원 배열과 3 * 4 크기의 double 2차원 배열을 선언한 예시입니다. #include int main(){ /* [[1, 2, 3], [4, 5, 6]] 꼴의 2차원 정수 배열 */ int arr1 [2][3] = { {..

C & C++ 2022.04.17

[C언어] 문자열 선언 방법 정리(배열, 포인터)

C언어 string 배열 및 포인터 선언 예제 및 특징 비교 C언어에서 문자열(string) 자료를 char 배열로 선언하는 경우와 포인터를 이용하여 선언하는 경우의 예시 코드를 살펴보고, 이 두 문자열 선언 경우의 특징을 비교해보도록 하겠습니다. 배열(array) 이용 문자열 선언 예시 C언어에서는 C++과 달리 string을 직접적으로 다룰 수 있는 자료형이 없어 각 글자에 대한 char 변수들의 배열 혹은 포인터 형태로 선언을 해야합니다. 그렇다면 먼저 array를 통한 문자열 선언 방법을 살펴보겠습니다. char 배열을 통한 string 선언을 그림으로 도식화하면 다음과 같습니다. 편의상 메모리 주소는 200부터 시작하는 것으로 가정하였습니다. 각 글자를 나타내는 char 자료형의 크기는 1 바이..

C & C++ 2022.04.05

[Numpy] 넘파이 어레이(배열) 인덱싱, 슬라이싱 총정리

파이썬 numpy array 인덱싱과 슬라이싱 파이썬 넘파이 어레이(배열)의 인덱싱, 슬라이싱 과정에 대해서 살펴보고, 몇 가지 중요한 특징과 예제를 정리해보는 시간을 가져보겠습니다. 아래의 간단한 2차원 array를 대상으로 예제를 설명하겠습니다. import numpy as np a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) 넘파이 어레이 인덱싱 인덱싱은 원소 1개만을 골라 추출하는 과정을 일컫습니다. 0번부터 인덱스가 시작함에 주의하며, axis마다 원하는 원소의 좌표를 순서대로 지정해주시면 됩니다. 뒤 쪽부터 인덱스를 가져오는 -1, -2, ...의 인덱싱도 리스트처럼 지원합니다. 예를 들어, 두 번째 행..

Python/Numpy 2022.01.10

[C언어] 배열(Array) 구조 선언, 할당, 포인터 연산, 출력 예제

지난 번에 C언어 포인터에 관한 포스팅에 이어, 이번에는 포인터를 기반으로 한 배열 구조에 대한 예제를 몇 가지 다루어보고자 합니다. C언어 배열 구조 선언(Array 선언) 배열 구조는 연속된 주소를 원하는 개수만큼 통째로 할당받아, 자료를 원하는 위치에 할당하여 순서로 접근 가능하게 만든 구조입니다. 다만, 파이썬의 리스트 등과는 다르게, 특정 자료형을 넣기로 선언했다면 해당 자료형만 넣어야하는 식의 구성으로 되어 있다는 점이 특징입니다. 예를 들어, 한 배열에 int, double 등 여러 자료가 섞여서 들어가는 것은 불가능합니다. 선언하는 문법 자체는 매우 간단합니다. 다음의 예시 코드를 살펴보겠습니다. #include int main(){ // 배열 선언 (값 초기화 X) int arr[5]; ..

C & C++ 2021.12.07
반응형