본문 바로가기

Programming/C

(20)
[ProjectH4C] 코딩도장 Unit 33 Write-Up FizzBuzz FizzBuzz는 프로그래밍 문제이다. 규칙은 다음과 같다. 1에서 100까지 출력 3의 배수는 Fizz 출력 5의 배수는 Buzz 출력 3과 5의 공배수는 FizzBuzz 출력 위의 규칙을 모두 적용시켜서 작성해보면 코드는 다음과 같다. #include int main() { for (int i = 1; i
[ProjectH4C] 코딩도장 Unit 32 Write-Up goto 명령문 반복문을 사용하지 않고 반복문의 동작을 수행하는 것이 가능하도록 해주는 명령문이 존재한다. 이럴때 사용하는 것이 goto이다. goto 명령문을 이용한 코드의 흐름은 다음과 같다. C언어를 배우게 되면, goto를 배우면서 가급적 사용하지 말라는 이야기를 듣게 되는데, goto를 적절히 사용하면 코드의 중복을 없앨 수 있다. 특히 에러처리에 굉장히 유용해서 리눅스 커널에서 자주 쓰이는 명령문이기도 하다. 사용 방법은 간단하다. 먼저, 넘어가고자 하는 지점에 레이블이란 것을 지정해주어야 한다. 각각의 레이블은 이름들을 가지는데, 이때 레이블 뒤에 콜론(:)을 써주어야 한다. 그리고 해당 레이블로 넘어가고자 한다면, goto 레이블; 을 작성해주면, 그 사이의 코드는 전부 무시하고 레이블로 ..
[ProjectH4C] 코딩도장 Unit 27~31 Write-Up 반복문 여태까지는 변수를 입력받고 입력받은 변수에 대해 한 번 처리하고 종료하는 코드를 작성하였는데, 코드를 작성하다 보면 같은 동작을 여러번 실행해야 하는 경우가 있다. 이러한 경우, 반복문을 이용해 원하는 만큼 반복 실행할 수 있다. 반복문의 종류에는 for, while, do ~ while이 있다. for 구문 for문의 기본 형태는 다음과 같다. for(초기식; 조건식; 변화식) { 반복할 내용 } 초기식을 통해 변수를 초기화 한 후, 조건식을 판별한다. 조건이 참이면 내용을 실행, 거짓이면 for문을 벗어나게 된다. for문의 동작 과정은 다음과 같다. 루프(Loop)라고 불리는 부분이 반복 수행되는 부분이다. 보통은 변수를 하나 선언해서 해당 변수를 카운트하면서 횟수를 지정해 주는데, Hell..
[ProjectH4C] 코딩도장 Unit 26 Write-Up Switch 조건에 따라 다른 동작을 해주는 문법으로 if문이 있다. if문의 기본 구조는 다음과 같다. if(조건 1){ 내용 1 } else if(조건 2){ 내용 2 } else{ 내용 3 } if문은 여러가지 경우에 따른 동작을 사용할 수 있지만, 각각의 조건식이 참이거나 거짓인 경우 두 가지만 처리할 수 있다. else if를 사용해 여러개의 조건을 작성해서 처리할 수 있지만, 각각의 조건식들을 모두 지정해주어야 하기 때문에 번거로운 감이 없잖아 있다. 이러한 경우, switch 문을 사용하여 다소 편하게 사용할 수 있다. switch의 기본 구조는 다음과 같다. switch(변수){ case 조건1: 내용1 break; case 조건2: 내용2 break; case 조건3: 내용3 break;..
[ProjectH4C] 코딩도장 Unit 23 ~ 25 Write-Up 비트 연산자 보통 자료형을 사용할 땐 바이트(Byte)의 단위로 사용한다. 이를 비트(bit)의 단위로 쪼개서 사용하기 위해 비트 연산자를 사용한다. 비트 연산자의 종류는 다음과 같다. 연산자 설명 & 비트 AND | 비트 OR ^ 비트 XOR(배타적 OR, Exclusive OR) ~ 비트 NOT 비트를 오른쪽으로 시프트 &= 비트 AND 연산 후 할당 |= 비트 OR 연산 후 할당 ^= 비트 XOR 연산 후 할당 = 비트를 오른쪽으로 시프트한 후 할당 비트 단위 연산자는 2진수에 관련한 연산이기 때문에 지금부터는 모든 변수의 값을 2진수로 표현한다. 문자형 변수 x, y에 각각 10, 20이 저장되어 있다고 한다. 문자형 변수를 사용하는 이유는 정수형 변수는 값이 너무 크기에 편의상 문자형 변수를 사..
[ProjectH4C] 코딩도장 Unit 20 ~ 22 Write-Up 비교 연산자 비교 연산자에는 단항 연산자, 이항 연산자, 삼항 연산자가 있다. 각각은 연산에 필요한 피연산자(값)의 갯수가 한개, 두개, 세개인 경우를 기준으로 구분한다. 단항 연산자의 예로는 증감연산자(++, --)가 있다. 이는 a++과 같이 하나의 피연산자를 필요로 한다. 이항 연산자의 예로는 +, -, *, /, %과 같은 수식을 계산하는 산술 연산자와 비교 연산자 등이 있다. 비교 연산자의 종류는 다음과 같다. 연산자 설명 == 같다. != 같지 않다. > 크다. = 크거나 같다. =10) ? 100 : 50; return 0; } 삼항 연산자는, if ~ else 구문을 한 줄로 표현해 놓은것과 같은데, 이를 if ~ else를 이용해서 표현하면 다음과 같다. #include int main(..
[ProjectH4C] 코딩도장 Unit 17 ~ 19 Write-Up if 구문 코드를 작성하다보면 경우에 따라 다른 결과를 출력해야 하는 상황이 생긴다. 이를 유연하게 처리해주는 방법이 if문을 사용하는 것이다. 기본형태는 다음과 같다. if(조건1){ 내용1 } 조건식이 참일 경우에만 중괄호 안에 있는 내용이 실행된다. 조건식을 작성할 때, 예를 들어 x가 10일 때를 조건으로 작성하기 위해선 x=10이 아닌 x==10으로 작성해야 한다. = : 대입(할당) 연산자. 보통 수학에선 "같다"의 의미로 쓰이지만, C언어에서는 우변의 값을 좌변에 대입하는 대입연산자로써 사용된다. ==: 비교 연산자. 수학에서 쓰이는 "같다"와 같은 의미로 쓰인다. 만약 if(num==10)이 아닌 if(num=10)으로 작성한다면, num에 10이 저장된 후 if(num)이 된다. 이 때 ..
[ProjectH4C] 코드업(CodeUp) 기초 100제 1081~1100 Write-up #1081 주사위를 2개 던지면? 1부터 n까지의 출력은 for문으로 해결 가능하지만, 1부터 n까지, 1부터 m까지의 조합은 이중 for문을 사용해야 한다. 이중 for문은 바깥에 있는 for문이 1회 실행되고 안에 있는 for문이 n회 실행된다. 그 후 바깥의 for문이 2회째 실행이 되고 안에 있는 for문이 n회 실행된다. 이를 이용하면 구구단, 두 가지 경우의 모든 경우의 수 등에 사용할 수 있다. 여러개의 for문을 중첩해서 사용할 땐 가급적 서로 다른 변수를 사용해서 서로의 for문이 실행되는데 지장이 없도록 하는게 좋다. #include int main(){ int n,m; int i,j; scanf("%d %d", &n, &m); for(i=1; i