본문 바로가기

프로그래밍 언어/C, C++

(40)
[Hackerrank] 10. StringStream 10. StringStream [ 난이도: Easy | 분야: Strings ] 1. 내용 정리 이번 챌린지에서는, string stream을 다룰 것이다. StringStream이란 string을 조작하는 stream class이다. 이것은 메모리 기반 I/O 동작 stream을 사용한다. StringStream은 다른 자료형을 사용할 때 도움이 된다. 아래 연산자/함수들은 많이 사용된다: - 연산자 >> : 형식화된 데이터를 추출한다. - 연산자 > a >> ch >> b >> ch >> c; // a = 23, b = 4, c = 56 여기서 ch는 버려지는 쉼표를 저장하기 위해 사용된다. 만약 >> 연산자가 값을 반환하면, 이는 올바르게 연산자를 사용한 것이다. 값을 반환하지 못한다면, 이는 연산..
[Hackerrank] 09. Variable Sized Array 09. Variable Sized Array [ 난이도: Easy | 분야: Introduction ] 1. 내용 정리 n개의 요소를 가진 배열이 있다고 생각하자. 배열의 인덱스 i는 배열의 ki 정수를 포함하고 있다. 설명 부분의 다이어그램을 참조하라. 2. 과제 과제 설명 주어진 a 에 대해, q 쿼리를 답하라. 각 쿼리는 포맷 i j 에 포함되고, i는 배열 a의 인덱스를 의미한다. 그리고 j 는 a[i]에 위치한 인덱스를 의미한다. 각 쿼리에서 a[i]에 있는 요소 j를 찾아낸 다음 새로운 줄에 출력하라. 입력 형식 첫 줄에는 두 개의 공백으로 분리된 정수를 포함하고 있다. 이 정수는 배열의 크기인 n과 쿼리의 개수인 q를 의미한다. n subsequent line의 각 줄 i는 공백으로 분리된 ..
[Hackerrank] 08. Arrays Introduction 08. Arrays Introduction [ 난이도: Easy | 분야: Introduction ] 1. 내용 정리 배열이라는 것은 연속적인 메모리 주소를 사용하며 동일한 자료형의 데이터들을 저장하고 있는 것을 말한다. 각 주소는 인덱스를 더함으로써 접근할 수 있다. 크기가 10인 배열은 다음과 같이 정의할 수 있다. int arr[10]; // Declares an array named arr of size 10, store 10 integers. 메모 C와는 다르게 C++는 malloc()과 같은 특수한 call을 하지 않아도 배열을 dynamic 하게 할당할 수 있다. 만약 n = 10이라면, int arr[n] 은 10개의 정수를 갖는 배열을 만든다. 배열의 요소에 접근하는 방법: Indexin..
[Hackerrank] 07. Pointer 07. 포인터 [ 난이도: Easy | 분야: Introduction ] 1. 내용 정리 C++에서 포인터는 코드의 다른 곳에서 메모리 주소를 공유할 때 사용한다. 함수가 변수의 값을 수정해야할 때 사용하지만, 값을 따로 저장하는 것은 아니다. 변수의 메모리 주소에 접근하기 위해, &를 사용한다. 예를 들어, &val이라고 하면 val의 메모리 주소를 반환한다. 이 메모리 주소는 포인터에 할당되고 함수들 사이에서 공유될 수 있다. 예를 들어, int * p = &val 은 포인터 p에 val의 주소를 할당합니다. 메모리 포인터가 가리키는 데이터를 접급하고 싶다면 변수명에 *을 붙인다. 예를 들어, * p는 val에 저장되어 있는 데이터를 반환하고 val의 데이터를 수정할 수도 있다. void increm..
[Hackerrank] 06. Functions 06. 함수 [ 난이도: Easy | 분야: Introduction ] 1. 내용 정리 함수라는 것은 여러 구문들을 한데 모아둔 것이다. return type에 기반하여 아무 것도 반환하지 않거나(void) 어떤 것을 반환한다. Syntax return_type function_name(arg_type_1 arg_1, arg_type_2 arg_2, ...) { ... ... ... [if return_type is non void] return something of type 'return_type'; } 예를 들어, 네 개의 파라미터의 합을 반환한다고 할 때 다음과 같이 코드를 작성할 수 있다. int sum_of_four(int a, int b, int c, int d) { int sum = 0; ..
[Hackerrank] 05. For Loop 05. For Loop [ 난이도: Easy | 분야: Introduction ] 1. 내용 정리 목적 For 구문은 코드를 반복적으로 실행할 때 사용하는 구문이다. Syntax for ( ; ; ) expression_1: for문을 돌리기 위한 변수의 초기값을 설정한다. expression_2: for문을 종료하기 위한 조건을 설정한다.(거짓일 경우 for문을 계속 진행한다.) expression_3: for문을 돌리기 위한 플래그/변수를 업데이트하는 규칙을 정한다. for(int i = 0; i < 10; i++) { ... } 이번에는, 변수를 증가하는 방향으로 코드를 설계할 예정이다. 2. 과제 입력 형식 개행 문자로 구분된 두 양의 상수 a, b가 있다.(a가 b보다 작거나 같다.) 출력 형식..
[Hackerrank] 04. Conditional Statements 04. 조건문 [ 난이도: Easy | 분야: Introduction ] 1. 내용 정리 if와 else는 C/C++의 조건문에서 많이 사용하는 구문이다. 그리고 이 구문은 조건이 0개, 1개 또는 여러 개 일 때와 관계없이 사용할 수 있다. 여기서는 아래와 같은 방식으로 사용할 것이다: If 이 구문은 condition이 참일 때 괄호({})로 묶여있는 body 부분의 statement1을 실행한다. if (condition) { statement1; ... } If ~ else 이 구문은 condition이 참이면 statement1 을 실행하고, 조건이 거짓이라면 statement2를 실행한다. 무조건 둘 중 하나의 statement가 실행함에 유의해야 한다. if (condition) { stat..
[Hackerrank] 03. Basic Data Types 03. 자료형 기본편 [ 난이도: Easy | 분야: Introduction ] 1. 자료형 C++에서의 자료형과 format specifier 그리고 비트 길이는 다음과 같다: 1) Int ("%d"): 32비트 정수 2) long ("%ld"): 64비트 정수 3) char("%c"): 문자형 4) float("%f"): 32비트 실수 5) double("%lf"): 64비트 실수 읽기 자료형을 읽기 위해서는, 아래와 같은 구문을 사용해야 한다: scanf("'format_specifier'", %val) 예를 들어, 문자와 double 형식의 데이터를 읽기 위해서는: char ch; double d; scanf("%c %lf", &ch, &d); 이런 형식으로 작성하면, format specifie..
[Hackerrank] 02. Input and Output 02. 입력과 출력 [ 난이도: Easy | 분야: Introduction ] 1. 목표 이번에는, stdin으로 입력값을 읽어오는 것과 stdout으로 출력값을 표시하는 것을 해볼 것이다. 2. 내용 정리 C++에서는 공백으로 분리된 입력의 토큰 하나를 cin을 통해 읽을 수 있고 cout을 통해 출력을 표시할 수 있다. 우선, 두 개의 변수를 선언했다고 가정하자. string s; int n; 그리고 입력 "High 5"를 읽고 싶다. 이 때 우리는 아래와 같이 입력 받을 수 있다. cin >> s >> n; 이 코드에서는 첫 글자인 "High"를 stdin으로 일고 문자열 s에 저장한다. 그 후에 두 번째 글자인 "5"를 stdin으로 읽고 상수 n에 저장한다. 만약 이 값들을 공백으로 구분된 st..
[Hackerrank] 01. Say "Hello, World!" With C++ 01. C++로 "Hello, World!" 출력하기 [ 난이도: Easy | 분야: Introduction ] 1. 목표 이것은 stdout을 연습할 수 있는 간단한 챌린지입니다. 이 챌린지를 시작하기 전에 먼저 이 문제부터 풀어보세요. 2. 내용 정리 우리는 항상 컴퓨터 언어를 배울 때 매우 유명한 문구를 출력하는 것으로 시작한다! C++에는 stdout으로 "Hello, World!"를 출력하는 방식에는 두 가지가 있다. 하나는 printf 이고 다른 하나는 cout 이다. 대부분은 cout 형태로 많이 작성한다. cout은 다음과 같은 형식을 갖는다. cout