전체 글

배우고 성찰한 것을 기록하는 블로그입니다.
했던것들/정보처리기사

정보처리기사/소프트웨어 개발/자료구조

나는 축산전공자였고, 이번에 정처기를 새롭게 준비하고 있다. 비전공자가 타 전공의 기사시험을 취득하려면 새로운 정보들을 빠르게 습득해야한다. 그러기 위해서는 각자만의 방식으로 이해하는 것이 굉장히 중요하다. 내 방식은 누구에게 알려주듯 글을 쓰는 것이다. 일단 새로 얻은 지식들을 초벌굽기하듯 이해하고, 나중에 맛나게 요리해보리라. 자료구조(Data Structure)는 컴퓨터 상 자료를 효율적으로 저장하기 위해 만들어진 논리적인 구조이다. 자료구조의 분류에는 선형 구조와 비선형 구조가 있다. 선형 구조에는 리스트(List), 스택(Stack), 큐(Queue), 데크(Deque; Double Ended Queue)가 있다. 비선형 구조에는 트리(Tree), 그래프(Graph)가 있다. 먼저 선형구조들부터..

C, C++

오늘 공부한 C언어(비트 연산자 이용하기)

비트 연산자는 바이트 단위보다 더 작은 비트 단위로 연산하는 연산자이다. BIT는 2진수를 저장하는 단위이고, 컴퓨터에서 사용할 수 있는 최소 단위이며, 0과 1을 나타낸다. Byte는 8비트 크기의 단위이다. 비트 연산자의 종류는 아래와 같다. & : 비트 AND | : 비트 OR ^ : 비트 XOR (배타적 OR, Exclusive OR) ~ : 비트 NOT > : 비트를 오른쪽으로 시프트 &= : 비트 AND 연산 후 할당 |= 비트 OR 연산 후 할당 ^= : 비트 XOR 연산 후 할당 = : 비트를 오른쪽으로 시프트 한 후 할당 비트 연산자는 비트로 옵션을 설정할 때 주로 사용하며 저장공간을 아낄 수 있는 장점이 있다! 이런 방식을 flag 라고 부른다. ※ 배타적 OR은 처음보는 개념이다. 입..

C, C++

오늘 공부한 C언어(불 자료형 사용하기)

불(boolean) 자료형은 논리 자료형이라고도 하며 참과 거짓을 나타낸다. C언어는 0을 거짓으로, 0이 아닌 숫자를 참으로 사용하지만 stdbool.h 헤더 파일을 사용하면 true를 참으로, false를 거짓으로 나타낼 수 있다. int 자료형과 bool 자료형의 크기를 확인해보았다. bool은 true, false와 같이 2가지만 연산해도 되니까 바이트의 크기가 작은 것 같다. 이를 잘 사용하면 메모리의 사용량을 크게 줄일 수 있을 것 같다. 참, 거짓을 표현하려면 int보다는 bool을 쓰는 것이 메모리 사용량 개념에서 더 생산적이라 할 수 있겠다. printf로 결과를 출력할 때에는 정수를 출력하는 것 처럼 서식 지정자로 %d를 사용한다. stdbool.h에는 자료형과 불값만 정의할 뿐 전용 ..

C, C++

오늘 공부한 C언어(논리 연산자 사용하기)

논리 연산자는 조건식이나 값을 논리적으로 판단한다. 그래서 논리 연산자는 if 조건문에서 조건식을 판단할 때 주로 사용한다. && = AND (논리곱 / 조건 모두 참일 때 참) || = OR (논리합 / 조건 중 하나만 참이여도 참) ! = NOT (부정 ~ / 참과 거짓을 뒤집음) C언어에서 논릿값 거짓(false)은 0, 참(true)은 0이 아닌 값이며 보통 1을 사용한다. 1 그리고 1 = 둘다 침이므로 값은 참 / 1 반환 (1 그리고 0) 또는 (0 그리고 1) = 1은 참, 0은 거짓이며, 하나가 거짓이므로 / 0 반환 0 그리고 0 = 둘 다 거짓이므로 / 0 반환 2 그리고 3 = 둘 다 참이므로 / 1 반환 논리 연산에서 중요한 부분은 단락 평가(short-circuit evaluti..

C, C++

오늘 공부한 C언어(비교 연산자와 삼항 연산자 사용하기)

if 조건문에서 사용할 수 있는 비교 연산자와 삼항 연산자를 알아보자. 비교연산자는 값을 비교할 때 사용한다. == 같음 큼 != 같지 않음(다름) >= 크거나 같음

C, C++

오늘 공부한 C언어(else if를 사용하여 여러 방향으로 분기하기)

자판기 안에는 각각 다른 음료수가 들어있고, 버튼을 누르면 해당 버튼에 해당하는 음료수가 나온다. 이걸 else if로 만들면 다음과 같은 모양이 된다. if 콜라 버튼을 눌렀다면 { 콜라를 내보냄 } else if 사이다 버튼을 눌렀다면 { 사이다를 내보냄 } else if 환타 버튼을 눌렀다면 { 환타를 내보냄 } else { 제공하지 않는 메뉴 } if에서 num1이 10인지 검사한 뒤 참이면 '10입니다'가 출력되고, 거짓이면 그 다음값인 else if에서 20인지 검사한다. 만약 참이면 '20입니다' 가 출력되고 거짓이면 아무것도 출력하지 않는다. else if도 if와 else와 마찬가지로 세미콜론은 붙이지 않는다. num1이 30으로 할당되었기 때문에 10도 아니고 20도 아니다. 거짓 값인..

C, C++

오늘 공부한 C언어(else를 사용하여 두 방향으로 분기하기

if 광고전화인가? { 전화를 끊고, 차단 목록에 등록한다. } else { 계속 통화한다. } else는 if 조건문 뒤에 오며 단독으로 사용할 수 없다. else에 ;을 붙이면 조건식의 결과와는 관계없이 항상 실행된다. ;이 else와 if의 관계를 끊어버리기 때문이다. else도 if와 마찬가지로 실행할 코드가 한 줄이면 중괄호를 생략 가능하다. 그러나 실행할 코드가 두 줄 이상일 때 중괄호를 생략하면 아래와 같이 컴파일 에러가 발생한다. if의 코드들은 중괄호로 묶고, else의 코드들은 중괄호로 묶지 않는 경우에는 else의 두번째 코드들부터는 조건식에 상관없이 출력이 된다. else의 중괄호 없는 코드는 첫번째만 조건식에 인식되는 듯 하다. C언어에서는 if는 0일때 거짓, 0이 아닐 때 참으..

C, C++

오늘 공부한 C언어(if 조건문으로 특정 조건일 때 코드 실행하기)

배가 고프면 밥을 먹는다. 변의가 마려우면 화장실에 간다. 열심히 노력하면 언젠가는 원하는 바에 도달한다. if문 시작한다. if 조건문은 괄호 안에 조건식을 사용하여 지정한다. if (조건식) { 코드 } C언어에서 조건문은 if() 형식으로 사용하며, (괄호)안에는 조건식이 들어간다. {중괄호}안에는 조건식이 만족할 때 실행할 코드를 넣는다. 위에서 if (num1 == 10)은 조건식이 되고, { } 내부는 조건식이 만족할 때 실행되는 코드가 된다. ==는 두 값이 같을 때 라는 뜻이며 수학의 =(등호)와 같다. 일단 C언어에서는 =을 할당으로 사용하고 있으므로, 값을 비교할때는 ==을 사용한다. if 조건문을 사용할 때는 ;(세미콜론)을 조심해야 한다. 세미콜론을 조건문에 써버리면 if와 조건이 ..

C, C++

오늘 공부한 C언어(자료형의 확산과 축소)

정수와 실수를 선언하고 함께 연산하면 결과값은 실수로 나온다. 왜냐햐면 실수가 정수보다 표현범위가 더 넓기 때문이다. C언어에서는 자료형을 섞어서 쓰면 컴파일러에서 암시적 형 변환(implicit type conversion)을 하게되는데 자료형의 크기가 큰 쪽, 표현 범위가 넓은 쪽으로 자동 변환된다. 이를 형 확장(type promotion)이라고 하며 값이 버려지지않고 그대로 보전된다. 크기가 다른 정수끼리의 연산을 살펴보자. long long int가 int보다 크기(바이트)가 더 크다. 따라서 int와 long long int을 함께 연산하면 long long int로 변환된다. 11.0에서 5.0을 나누면 2.2이지만, 정수 자료형에서는 실수를 표현할 수 없다. 따라서 소수점 이하 자리가 버려..

C, C++

오늘 공부한 C언어 (나머지 연산하기)

나머지 연산은 정수에서만 사용할 수 있고, 실수에서는 사용할 수 없다. 실수에서 사용 시 컴파일 에러가 나게 된다. 또 7 % 0 처럼 나눈 결과의 나머지는 구할 수 없다. 실수끼리 나누었을 때 나머지는 math.h 헤더 파일의 fmod, fmodf, fmodl 함수로 구할 수 있다. 여기서 fmod 함수는 double형 실수, fmodf는 float형 실수, fmodl은 long double형 실수일 때 사용한다. · fmod(나누어지는 수, 나누는 수) 의 형식으로 사용한다. 내 힘으로 풀었다!!!! 알면 별거 아니지만 중간까지 사고하는게 좀 걸렸다. 다만 정답과는 조금 다르게 풀었다... ㅎㅎ 암튼 풀린건 풀린거니까 잘 풀었다고 생각한다. 다만 본래의 정답도 한번 더 복습하고 갈 뿐이다.

2DC
2DC