대표적인 for문 연습 방법인 별찍기에 대해 포스팅해보려합니다. 별찍기는 반복문을 사용해서 여러가지형태로 별(*)을 출력하는 말하는데요. 기본적인 사각형, 삼각형 이런것은 쉽게 구현이 가능하지만 피라미드, 마름모, 모래시계 이런것들은 생각보다 까다로워요. 특히 처음 반복문을 접하시는 분들은 많이 힘들어 하실거에요. 그래서 이번 포스팅에서는 상대적으로 쉬운 사각형, 삼각형부터 상대적으로 어려운 피라미드, 나비, 마름모까지 한번 만들어서 그 소스를 포스팅해보자 합니다. 사각형 만들기 for(int i=0;i
반복문 종류 반복문의 종류로는 for문, while문 do-while문이 있습니다. 어떤 상황이냐에 따라 반복문의 문법을 결정하여 코딩을 하게 되는데요. for문과 while문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어느 쪽을 선택해도 상관은 없습니다만 for문은 반복횟수를 명확히 알고 있을 때 주로 사용하고 while문은 조건에 따라 반복 횟수를 결정해야 할 때 주로 사용하게 되는 것 같습니다. while문과 do-while문의 차이점은 조건을 먼저 검사하느냐 나중에 검사하느냐만 다를 뿐 기본적인 로직은 같습니다. do-while은 솔직히 잘 쓰지는 않는 것 같아요. 대부분 for문과 while문을 많이 쓰게 되는데 특히 for문을 가장 많이 사용하게 됩니다. 그 이유는 for문이 while..
반복문의 종류 반복문의 종류로는 for문, while문 do-while문이 있습니다. 어떤 상황이냐에 따라 반복문의 문법을 결정하여 코딩을 하게 되는데요. for문과 while문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어느 쪽을 선택해도 상관은 없습니다만 for문은 반복횟수를 명확히 알고 있을 때 주로 사용하고 while문은 조건에 따라 반복 횟수를 결정해야 할 때 주로 사용하게 되는 것 같습니다. while문과 do-while문의 차이점은 조건을 먼저 검사하느냐 나중에 검사하느냐만 다를 뿐 기본적인 로직은 같습니다. while문 while문은 조건식이 true일 경우에 계속해서 반복하는 문법입니다. 조건식에는 비교 또는 논리 연산식이 줄로 오는데 조건식이 false가 되면 반복을 멈추고 wh..
조건문 switch문 switch문은 if문과 같이 조건 제어문에 속합니다. 하지만 switch문은 if문처럼 조건식이 =와 같은 이상, 이하, 초과, 미만 같은 부등식이 사용될 수 없습니다. if문은 조건식이 true일 경우에 블록이 실행된다고 하면 switch문은 비교할 변수가 어떤 값을 가지냐에 따라 실행문을 선택됩니다. 오직 ==만 비교할 수 있는것인셈입니다. 그러므로 모든 switch문은 if문으로 바꿀 수 있지만 if문에서 부등식이 사용된 경우에는 switch문으로 치환하실 수 없습니다. 하지만 switch문을 사용함으로써 if문보다는 좀 더 코드의 가독성이 좋게끔 작성하실 수 있고 if문보다 미세하게 switch문이 빠르기에 switch문으로 작성할 수 있는 코드가 있다고하면 if문보다 sw..
조건문 if문 If문은 조건식의 결과에 따라 중괄호 { } 로 묶어놓은 블록이 실행여부가 결정되는 조건문입니다. 조건식에는 true 또는 false값을 산출할 수 있는 연산식이나 boolean변수가 올 수 있습니다. 조건식이 true면 블록을 실행하고 false면 블록을 실행하지 않습니다. C언어에서 0은 false(거짓)로 0이 아닌 나머지 값은 모두 true(참)로 인식합니다. if문 문법 //문법 if(조건식){ 실행문.... } //사용법 if(1){ printf("if문 예제"); } 만약 조건식이 true가 될때 실행해야 할 문장이 하나밖에 없다면 중괄호 {}를 아래와 같이 생략할 수도 있습니다. //중괄호 {} 생략 if(1) printf("if문 예제") if문 예제 #include int..
이진탐색이란? 이진탐색(이분검색)은 말 그대로 검색할 자료를 반씩 나누어 그 중간값을 찾는 대상값과 비교하는 작업을 반복하여 자료를 찾는 검색을 뜻하며 빠른속도로 자료를 찾을 수 있습니다. 단 이진탐색을 하기위해서는 데이터가 정렬되어있어야 합니다. 이진탐색 과정 이진탐색을 할 데이터들이 위와 같이 정렬되어있다고 가정하고 숫자 7을 찾는 이진탐색과정을 알아보겠습니다. 1. 첫번째 주소와 마지막 주소의 위치를 활용하여 중간 위치를 계산합니다. 중간위치 = (0+9)/2 = 4.5 -> 소수점절삭 -> 4 2. 중간위치 4번째주소에 있는 값 8이 찾으려는 값인지 확인합니다. 7은 8보다 작으므로 찾으려는 값의 범위는 0~4번째 주소입니다. 3. 찾으려는 범위의 첫 번째 주소와 마지막 주소의 위치를 이용하여 중..
입력받은 그레이코드를 2진수로 변환하기 그레이 코드를 이진수로 변환할 때는 첫번째 이진수는 그레이 비트를 그대로쓰고, 두번째 이진수 비트부터는 왼쪽에 구해놓은 2진수와 변경할 그레이코드를 XOR연산하여 씁니다. [C언어] 입력받은 2진수를 그레이코드로 변환하기 C언어 / C++ 코드 #include main(){ int i; int input[4], cont[4]; printf("그레이코드: "); for(int i=0; i
입력받은 이진수를 그레이코드로 변환하기 이진수를 그레이 코드로 변환할때는 첫번째 그레이 비트는 이진수 비트를 그대로 내려쓰고, 두번째 그레이 비트부터는 변경할 이진수의 해당번째 비트와 그 왼쪽의 비트를 XOR연산을 하여 내려적습니다. [C언어] 입력받은 그레이코드를 2진수로 변환하기 C언어 / C++ 코드 #include main(){ int i; int input[4], cont[4]; printf("이진수 입력 :"); for(int i=0; i
입력받은 이진수의 보수구하기 1의 보수는 0은 1로 1은 0으로 변경하면 되고, 2의 보수는1의 보수에 1을 더하면 됩니다. 즉 01100의 1의 보수는 10011이고, 2의 보수는 10100입니다. 이 로직을 어떻게 알고리즘으로 구현하느냐가 관건인데요. 1의 보수를 if문을 통해서 구해도 되지만 0은 1로, 1은 0으로 변환할때는 1에서 변환할 값을 그냥 빼주면 1의 보수를 좀 더 간편하게 구하실 수 있습니다. 2의 보수를 구할때는 1의 보수에 1을 더하면 되는데 이진수의 각자리가 배열의 각 요소에 분리되어 있으므로 맨 오른쪽 배열의 값에 1을 더해서 만약 맨 오른쪽 배열의 수가 1을 초과하면 앞자리 수로 1을 반올림 해줍니다. C언어/C++ 코드 #include main() { int a[5],b1[..