문제집 / 그룹 문제 - Coding is fun 
 사용법 : 블록 코딩 
 01 . Input / Output 
 02 . Variables 
 04 . Value / Conversion 
 05 . Math 
 06 . Logics 
 07 . Loops 
 09 . Functions 
 사용법 : C 프로그래밍 
 02 . C 언어 기본 - 함수 
 03 . printf ( ) 함수 와 서식 
 현황 / 랭킹 
 제출 현황 
 제출 통계 
 그룹 / 대회 
 나 의 결과 
 자유 강의 
 교재 / 자료 
 문제집 / 그룹 문제 
 문제 해결 과 C 프로그래밍 : 01 . 기본 개념 관리자 0 1178 3 2018 - 12 - 17 
 03 : 20 : 00 2018 - 12 - 25 
 05 : 07 : 59 2018 - 12 - 17 
 지금 해결 해야 할 어떤 문제 에 직면 해 있 다고 가정 하 자 . 여기 서 ‘ 문제 ’ 는 현재 학교 에서 배우 고 있 는 교과 와 관련 된 문제 일 수 도 있 고 , 일 상 생활 에서 발생 하 는 소소 한 문제 일 수 도 있 다 . 이때 , 컴퓨터 를 이용 하 여 그 문제 를 해결 하 기 위해서 는 먼저 문제 에 대한 인식 이 선행 되 어야 한다 . 문제 를 인식 한다는 것 은 그 문제 의 성격 을 파악 하 는 것 이 다 . 
 만약 , 해결 하 고자 하 는 문제 가 암산 으로 계산 할 수 있 거나 , 종이 와 연필 을 사용 해서 간단 하 게 해결 가능 하 다면 우리 는 굳이 컴퓨터 를 이용 할 필요 가 없 다 . 컴퓨터 를 이용 해야 하 는 경우 는 대부분 처리 해야 할 데이터 가 많 거나 , 동일 한 계산 이나 작업 이 반복 되 는 경우 , 또는 , 상당히 복잡 해서 다른 방법 으로 는 처리 할 수 없 는 경우 등 일 것 이 다 . n 개 의 수 로 이루어진 무작위 수열 을 오름차순 으로 정렬 한다고 가정 하 자 . 여기 서 n 이 라는 숫자 가 10 미만 이 라면 , 암산 또는 종이 와 연필 만 으로 도 문제 를 충분히 해결 할 수 있 다 . 그러나 , n 이 상당히 크 다고 가정 하 면 , 즉 , n 이 100 이 라면 , 암산 이나 직접 써 내려가 며 계산 하 는 방식 으로 는 해결 하 기 힘들 다 . 1000 개 , 10000 개 라면 거의 불 가능 에 가깝 다 . 
 또한 전교생 의 과목 별 성적 합계 와 평균 을 계산 한다고 가정 하 자 . 4 ~ 5 명 의 성적 은 간단히 계산 할 수 있 지만 , 100 명 이상 의 성적 을 암산 이나 손 으로 계산 하 는 경우 는 매우 드물 다 . 가능 하 더라도 계산 결과 의 신뢰 성 은 많이 떨어질 것 이 다 . 이러 한 문제 들 은 컴퓨터 를 이용 하 는 것 이 해결 하 기 도 쉬울 뿐 더러 정확 성 과 더불 어 결과 의 신뢰 성 도 높 아 진다 . 
 컴퓨터 로 문제 를 해결 할 때 는 그 문제 의 특정 사례 , 즉 , 정렬 문제 에서 수열 을 구성 하 는 원소 의 개수 가 10 개 , 또는 , 100 개 인 경우 만 을 풀 기 위한 특수 한 프로그램 을 만드 는 것 이 아니 라 , 보편 적 인 사례 를 해결 할 수 있 는 보편 적 인 범용 프로그램 을 만들 어야 그 프로그램 의 유용 성 이 높 아 진다 . 10 개 , 100 개 , 157 개 , 1020 개 , 15022 개 . .. 등 다양 한 개수 의 원소 로 이루어진 수열 을 정렬 할 수 있 는 프로그램 을 개발 해야 한다는 것 이 다 . 
 문제 를 해결 하 기 위해 컴퓨터 를 이용 하 기 로 결정 하 였 다면 , 그 문제 를 컴퓨터 로 처리 할 수 있 도록 다시 정의 해야 한다 . 문제 를 다시 정의 하 는 일반 적 인 방법 은 입력 과 출력 으로 분리 하 여 기술 하 는 것 이 다 . " n 개 의 수 로 이루어진 무작위 수열 을 오름차순 으로 정렬 " 하 고자 하 는 문제 는 다음 과 같 은 입력 과 출력 으로 다시 정의 할 수 있 다 . 
 ￭ 입력 : n 과 n 개 의 수 로 이루어진 무작위 수열 
 ￭ 출력 : 오름차순 으로 정렬 된 수열 
 이때 , 가능 한 명확히 기술 해야 한다 . 왜냐하면 , 이렇게 분리 하 여 정의 된 입력 과 출력 이 곧 해결 해야 할 문제 이 기 때문 이 다 . 
 이제 남 은 것 은 입력 을 받 아서 원 하 는 출력 을 만들 어 내 는 처리 과정 ( Process ) 이 다 . 이러 한 처리 과정 을 " 알고리즘 ( Algorithm ) " 이 라고 한다 . 여기 서 , 알고리즘 이란 " 컴퓨터 가 어떤 작업 을 수행 하 기 위해 거쳐야 만 하 는 잘 정의 된 논리 적 단계 들 의 집합 " 이 다 . 즉 , 입력 데이터 를 받 아서 컴퓨터 로 하여금 일련 의 논리 적 단계 들 을 거치 게 함 으로써 원 하 는 출력 을 만들 어 낸다면 , 그것 이 바로 " 컴퓨터 를 이용 하 여 문제 를 해결 " 한 것 이 다 . 
 [ 보충 설명 : 입력 과 출력 , 그리고 알고리즘 ] 
 알고리즘 의 정의 방법 에 따라서 는 입력 과 출력 이 알고리즘 의 첫 번 째 단계 와 마지막 단계 로 포함 되 기 도 한다 . 그러나 , 컴퓨터 를 이용 하 여 효율 적 으로 문제 를 해결 하 고자 할 때 , 우리 의 주요 관심 사항 은 입 ‧ 출력 자체 보다 는 입력 으로부터 출력 을 만들 어 내 는 ' 과정 ', 또는 , ' 처리 ' 에 있 음 을 잊 지 말 자 . 
 알고리즘 의 설계 
 어떤 문제 를 컴퓨터 로 해결 할 수 있 도록 " 입력 " 과 " 출력 " 으로 분리 하 여 기술 하 였 다면 , 입력 받 은 데이터 를 원하 는 결과 로 만들 어 내 는 과정 인 " 알고리즘 " 을 설계 해야 한다 . 알고리즘 을 설계 한다는 것 은 알고리즘 을 구성 하 는 각 단계 를 규명 하 는 것 이 다 . 
 알고리즘 의 설계 도구 
 필요 한 단계 들 을 규명 하 기 위해서 는 우선 알고리즘 을 구성 하 는 세부 단계 들 을 어떤 방법 으로 든 구체 적 으로 표현 할 수 있 어야 한다는 것 이 다 . 도형 이나 그림 으로 표현 할 수 도 있 고 , 자연어 등 으로 기술 할 수 도 있 다 . 
 다음 은 종이 비행기 를 만들 기 위한 단계 들 을 그림 으로 표현 한 것 이 다 . 이것 이 바로 “ 종이 비행기 를 만드 는 ” 알고리즘 이 다 . 그러나 컴퓨터 알고리즘 은 일반 적 으로 위 와 같 은 도형 이나 도식 이 아닌 코드 로 표현 한다 . 이러 한 코드 를 “ 의사코드 ( Pseudocode ) " 라고 한다 . 
 의사 ( 疑 似 ) 코드 란 특정 프로그래밍 언어 로 기술 된 ‘ 진짜 ’ 코드 가 아닌 , 알고리즘 의 각 단계 와 전체 적 인 흐름 을 쉽 게 파악 할 수 있 도록 자연어 등 으로 기술 한 ‘ 가짜 ’ 코드 다 . 즉 , 실제 프로그래밍 언어 로 코딩 된 프로그램 은 기계어 로 번역 되 어 컴퓨터 에서 실행 될 수 있 지만 , 의사 코드 로 기술 된 프로그램 은 번역 되 거나 실행 될 수 없 는 , 진짜 코드 를 흉내 낸 코드 라는 의미 를 내포 하 고 있 다 . 이러 한 가짜 코드 를 사용 하 는 이유 는 알고리즘 의 전체 적 인 흐름 과 윤곽 을 쉽 게 파악 하 기 위해서 다 . 실제 프로그래밍 언어 로 알고리즘 을 기술 하 면 , 해당 언어 의 세세 한 문법 구조 등 이 알고리즘 의 전체 흐름 을 파악 하 는데 오히려 방해 가 될 수 있 기 때문 이 다 . 
 의사 코드 를 기술 하 는 특정 규칙 이나 문법 이 없 기 때문 에 , 알고리즘 을 기술 하 는 당사자 가 편리 한 방법 을 선택 하 여 기술 하 면 된다 . 영어 나 한국어 등 의 자연어 로 기술 할 수 도 있 으며 , 특정 프로그래밍 언어 와 유사 한 구조 로 기술 하 기 도 한다 . 알고리즘 을 파악 한 후 에 프로그래밍 언어 를 이용 하 여 알고리즘 을 구현 하 는 경우 가 일반 적 인 과정 이 므로 , 사용 빈도 가 높 은 프로그래밍 언어 , 특히 C , C ++, 또는 Java 스타일 의 의사 코드 를 사용 하 기 도 한다 . 
 코드 제목 시간 ( 초 ) 메모리 ( MB ) 나 의 판정 소스 제출 회 통과 회 비율 ( %) 시도 명 성공 명 비율 ( %) 
 한국 의 정보 과학 교육 , 
 전국 의 초등 교사 와 중 등 정보 ‧ 컴퓨터 교사 가 만들 어 갑니다 . 
 KOI 한국 정보 올림피아드 
 Copyright ( C ) 2010 Coding is fun . All Rights Reserved .