언어

c++ 기본 (출력 ~ 2차원 배열 개념)

werty2 2026. 1. 15. 21:11

- 출력

   cout << "출력하고 싶은 것";

   cout << "\n"; //한 줄 아래로 내리기 (따옴표를 넣어야 함, 문자열 안에서만 사용 가능)

 

- 변수:

  >  데이터를 저장할 수 있는 메모리 공간의 이름, 대입연산자(=)을 이용해 값을 초기화하거나 변경

  >  변수의 종류

  • int : 정수
  • double : 실수
  • bool : 불리언 (true/false)
  • char : 문자 (문자 하나만 저장 가능) / 작은따옴표 사용
  • string : 문자열 / 큰따옴표 사용

- 자료형

  > 특징

  • int: 양수, 음수, 0 모두 표현 가능 / -2^32 이상 2^31-1 이하 범위의 정수 담을 수 있음
  • double: 소수점 포함한 실수 저장, 큰 수의 범위 표현 가능, 오차 발생 가능성 O, 과학적 표기 가능
    • 과학적 표기법 예시 1) double e = 1.5e2;  //1.5 * 10^2 = 150 (소수점 아래가 0이면 기본 출력에서는 보이지 X)
    • 예시 2) double c = 2.3e-4;  //2.3 * 10^(-4) = 0.00023
  • bool: true - 1 / false - 0
  • char: 하나의 문자 표현, 작은 따옴표 이용

 

  - 형변환

    > (int)나 (double)을 붙여서 정수<->실수 형 변환 가능 / 주의) int는 double의 소수점 반올림 X, 단순히 버리기만 함.

    > (bool)은 0 제외 모든 값 true로 형변환, bool값을 (int)로 형변환 가능

 

- 연산자

  >연산자의 종류

  • 산술 연산자: +, -, *, /, % (int끼리의 연산에서는 결과값도 int로 나옴, int와 double형의 연산에서 결과값은 double으로 나옴)
  • 비교 연산자: ==, !=, <, >, <=, >=
  • 논리 연산자: &&, ||, !
  • 증감 연산자: ++, -- (후위 증감 연산자와 전위 증감 연산자로 나뉨)
    • 후위 증감 연산자: 변수 뒤에 붙임, 현재 값을 반환한 후 증가 또는 감소 
    • 전위 증감 연산자: 변수 앞에 붙임, 먼저 증가 또는 감소한 후 새로운 값 반환
    • 같은 줄에서 반환값을 사용하지 않으면 두 연산자의 차이는 거의 없음
  • 복합 대입 연산자: +=, -=, *=, /=, %= 

- 출력

cout << fixed : 그 이후에 출력하는 소수점 아래 자리를 고정

cout.preicision(n) : 유효숫자 n자리까지 출력 (출력되지 않은 n+1번째 자리에서 반올림을 진행한 결과 출력)

  > cout.precision(n)이 cout << fixed 다음에 등장하면 precision(n)은 소수점 아래 n자리까지 출력하는 모드가 됨.

 

- 입력

  > cin 함수: 사용자에게 입력을 요청하는 역할, 입력받은 후에 다음 코드를 실행 ( cin >> a; 처럼 사용, 화살표 방향이 반대)

     cin 함수는 공백, 탭, 줄바꿈을 기준으로 구분해서 각 변수마다 값을 입력받음.

 

- 조건문

  > 특정 조건을 만족할 때만 특정 코드 실행 -> 여러 가지 상황에 따라 다르게 동작 가능

  > if 문

if(조건){
    실행할 동작
}

조건이 참일 때 중괄호 안의 코드가 실행됨.

 

  > if - else 문

if(조건){
    실행할 코드1
}
else{
    실행할 코드2
}

조건이 true면 if 블록의 코드 실행, false면 else 블록의 코드 실행

 

  > else - if 문

if(조건1){
    조건1이 true일때 실행할 코드
}
else if(조건2){
    조건1이 false이며, 조건2가 true일때 실행할 코드
}
else if(조건3){
    조건1, 조건2가 모두 false이며, 조건3이 true일때 실행할 코드
}
else{
    조건1, 조건2, 조건3이 모두 false일때 실행할 코드
}

모든 조건이 참이 아니라면 else 안 구문 실행

 

- 반복문

  > for 문

구조

for(int i = 0; i < 반복횟수; i++){
    실행할 코드
}

 

표현 방법

  • int i = 0 : 초기화 (시작값, 반복문 시작될 때 한 번 실행됨) (i는 반복문 안에서만 사용 가능한 지역변수)
  • i < 반복횟수 : 조건 (거짓이면 종료)
  • i++ : 증감 (조건 검사 직전에 실행, 조건을 거짓으로 만들기 위한 장치)

※초기화, 조건, 증감 모두 상황에 따라 위와 다르게 사용 가능

  ex) for (int i = 30; i >10; i -= 2)  // i를 30부터(초기화) 10보다 클 때까지(조건) 2만큼 줄이며(증감) 반복 

 

  > while 문

     반복 횟수를 정해 놓을 수는 없지만 조건이 충족되는 동안에는 계속해서 반복하도록 하는 구문

     반복 조건이 언젠가 거짓이 되도록 설계해야함

구조

while(조건 검사){
    실행
}

조건 검사에서 거짓이 나올 때까지 실행을 반복

 

- 중첩 조건문

  if 문 안에 또 다른 if 문을 사용하는 것

 

- 1차원 배열

  배열: 여러 개의 값을 순서대로 저장할 수 있는 자료형

  • 동일한 타입의 데이터를 고정된 크기로 저장
  • 중괄호로 정의
  • 인덱스는 0부터 시작

 배열 생성

//생성과 초기화를 동시에 함
int array[5] = {5, 2, 1, 10, 100};

//초기화 없이 생성 (생성된 배열에는 무작위 쓰레기값이 채워짐)
int array[5];

//일부 데이터만 초기화 (작성되지 않은 뒷부분은 0으로 채워짐)
int array[5] = {5, 2};

[] 안에 들어가는 수가 배열의 크기

 

배열 특정 위치의 요소 변경

int array[5] = {5, 2, 1, 10, 100};

arr[1] = arr[3] * 3;
// arr: 5, 30, 1, 10, 100
cout << array[1];
//출력 결과: 30

특정 인덱스를 통해 접근한 요소는 하나의 변수처럼 활용 가능

 

- 문자열

  o 문자열 != 문자 (문자열은 문자들의 집합)

  o 큰따옴표로 감싸서 표현

 

  o 문자열 -> 수 변환 (문자열이 수로 변환 가능한 상태여야함.)

  • stoi(문자열) : 문자열 형태인 수를 정수로 변환
  • stod(문자열) : 문자열 형태인 수를 실수로 변환

문자열의 특정 문자는 인덱스 사용해 접근 가능 (인덱스는 0부터 시작)

string text = "HelloWorld";

text[5] = 'w';
cout << text;   // 출력: Helloworld

 

문자열의 메서드

  메서드: 특정 자료형이 자신만의 기능을 위해 갖고 있는 특별한 함수, 변수명.메서드명 형식으로 사용

  메서드 종류

  • length(): 문자열의 길이 반환 (공백, 줄바꿈, 특수문자 모두 포함)
  • substr(start): 부분 문자열 (문자열의 start 인덱스부터 마지막 인덱스까지의 부분 문자열 반환)
  • substr(start, length): 부분 문자열 (문자열의 start 인덱스부터 length 길이만큼의 부분 문자열 반환)

문자열과 연산자

  • + : 더한 순서대로 이어 붙인 문자열 반환
  • >, < : 사전순으로 앞에 오는 것이 더 작은 문자열
  • ==, != : 두 문자열의 내용이 일치하는지 확인 

특수 문자: 백슬래시(\)로 시작, 이스케이프 문자라고 함

  • \n : 줄 바꿈
  • \t : 탭
  • \\ : 백슬래시 하나 출력
  • \" : 큰따옴표 출력

- continue / break 문

  > continue 문: 반복문의 현재 실행 과정에서 남은 부분을 생략한 채 다음 증감으로 보냄

  > break 문: 반복문 즉시 종료, 반복문의 종료 조건과 관계 없이, 실행 부분에서 즉시 종료시킴

 

- 무한루프

  조건이 항상 참이어서 종료되지 않는 루프

  for 문이나 while 문에서 참이 아닌 조건을 만드는 값이 들어와도 그 반복까지는 실행 후 다음 조건 체크 때 반복문 밖으로 나옴

  (+ 남은 실행 없이 바로 나가고 싶으면 break 문 사용)

 

- 2중 반복문

> 하나의 for 문 안에 또 다른 for 문을 중첩하여 사용하는 구조, 2차원 구조와 같은 패턴 처리에 용이

for(int i = 0; i < 반복횟수 1; i++){
    for(int j = 0; j < 반복횟수 2; j++){
        // 반복되는 코드
    }
}

 

 

내부 반복문 모두 반복 -> 외부 반복문의 다음 반복 시작

2차원 구조에서의 외부 for 문: 행 / 내부 for 문: 열

 

ex) 가운데 정렬된 삼각형 출력

int n = 5;

for(int i = 1; i <= n; i++){
    // 공백 출력
    for(int j = 0; j < n - i; j++){
        cout << "  ";  //2칸
    }
    // 별 출력
    for(int j = 0; j < 2 * i - 1; j++){
        cout << "* ";
    }
    cout << "\n";
}


//출력 결과
        * 
      * * * 
    * * * * * 
  * * * * * * * 
* * * * * * * * *

 

> 2중 반복문에서의 변수

  외부 for 문 바깥에서 선언 - 변수값은 모든 반복 과정에서 누적됨 (전체 합계나 개수를 구할 때 사용)

  외부 for 문 내부에서 선언 - 각 외부 for 문마다 독립적으로 변수값이 계산됨 (각 행의 합계, 각 그룹별 계산 시 사용)

 

> 2중 반복문에서의 continue, break

  내부 반복문에서의 사용 - 내부 반복문의 특정 반복만 건너뛰거나, 내부 반복문만 종료 (외부 반복문에는 영향을 주지 X)

  외부 반복문에서의 사용 - 외부 반복문의 특정 반복을 건너뛰거나 (내부 반복문도 건너뛸 수 O), 이중 반복문 전체 종료 (내부 반복    문에도 영향 O)

 

- 2차원 배열

  > 배열 안에 배열이 있는 구조, 행과 열로 정의됨

 

2차원 배열의 기본 구조

자료형 배열명[행 크기][열 크기] = {
    {a00, a01, a02, a03},
    {a10, a11, a12, a13},
    {a20, a21, a22, a23}
}

 

 > 배열명[행 인덱스][열 인덱스]  형식으로 2차원 배열 안의 각 요소에 접근

 > 이중 for 문으로 2차원 배열의 각 요소에 쉽게 접근 가능

for(int i = 0; i < num; i++) {
	for(int j = 0; j < num; j++) {
		array[i][j]  // i: 행 인덱스, j: 열 인덱스 (왼 -> 오)
		array[j][i]  // i: 열 인덱스, j: 행 인덱스 (위 -> 아래)
    }
}

 

순회하는 방향에 따라 인덱스 변수를 다르게 설정해야 함.