문제집 | 만든이 | 문제수 | 조회수 | 좋아요 | 생성 | 수정 | 공개 |
---|---|---|---|---|---|---|---|
블록 코딩 : 01. Input / Output | 관리자 | 6 | 6169 | 2 | 2019-02-06 18:59:02 |
2019-03-24 22:51:49 |
2019-03-24 20:47:45 |
입력, 출력, 처리 과정
컴퓨팅 문제를 해결하기 위해서는 기본적으로 3단계의 과정을 거치게 됩니다. 값을 입력받아, 처리를 수행한 후, 결과를 출력하는 것입니다.
이것이 바로 '자동화'의 기본이지요. 이 과정 중에 어느 하나라도 소홀히 하면 그 문제를 해결할 수 없습니다.
특히, 무엇보다 간과하지 말아야 할 것은 입력과 출력 과정의 중요성입니다.
아무리 좋은 처리 과정과 알고리즘을 고안한다 하더라도 값을 입력할 수 없다면, 처리는 의미가 없게 됩니다.
입력과 처리 과정은 문제 없이 진행되었다고 하더라도 출력을 하지 못하면 그 또한 문제를 해결했다고 할 수 없습니다.
자~ 그럼, 입력과 출력을 담당하는 블록을 알아 보겠습니다.
Input 블록
입력을 위해서는 다음의 2가지 블록을 사용합니다. 두 블록은 모두 1개 라인 전체를 텍스트 형식으로 입력 받습니다.
- input by line 블록은 현재 라인 전체를 하나의 텍스트 값으로 가져옵니다.
예제 1
다음 프로그램 처럼 10 20 30 이 입력될 때, 1개 라인 전체를 텍스트 값으로 입력받게 됩나다.
수치값이 아닌 텍스트 값임에 주의해야 합니다.
- input by line with delimiter 블록은 현재 라인 전체를 하나의 텍스트 값으로 가져오되, 구분자 단위로 분리한 텍스트 '리스트'를 반환합니다.
예제 2
다음 프로그램 처럼 10 20 30을 input by line with delimiter로 입력하면, 공백을 기준으로 분리한 리스트를 반환합니다.
출력 화면에서 확인할 수 있듯이, 변수 a에 '10', '20', '30' 로 구성된 리스트가 저장되어 있습니다. 리스트는 [ ] 로 표현되며, 원소값은 대괄호 내부에서 쉼표로 구분되어 표시됩니다.
위의 2가지 블록을 통해 입력 받은 값은 모두 텍스트 형식이므로, 값을 '계산'할 수는 없습니다. 계산을 위해서는 '수치' 형식으로 바꾸어야 하는데, 값의 변환에 대해서는 다음 장에서 알려 드리겠습니다.
Output 블록
출력 블록에는 다음의 2가지 블록이 있습니다. print by line 블록과 print by line ... end = 블록입니다. 두 블록은 모두 텍스트, 수치, 변수, 리스트를 출력합니다. 텍스트나 수치는 값 그대로, 리스트는 [값, 값, 값, ... ] 형식으로 출력합니다.
두 블록의 차이점은 개행 처리에 있습니다.
- print by line 블록은 "abc"를 출력하고, 자동으로 개행(엔터)이 되는 반면,
- print by line ... end = 블록은 개행 대신에 맨 뒤에 주어진 텍스트(예를 들어, 공백이나, 쉼표)를 출력합니다.
만약, print by line ... end = 블록을 다음과 같이 작성하면, print 블록과 동일하게 됩니다.
코드 | 제목 | 시간(초) | 메모리(MB) | 나의판정 | 소스 | 제출 회 | 통과 회 | 비율(%) | 시도 명 | 성공 명 | 비율(%) | ||
00a37 | 정수 1개를 입력받아 그대로 출력하기 22 | 1 | 64 | 8132 | 2769 | 34.1 |
2292 | 2131 | 93.0 |
||||
00a00 | 1개 라인의 정수 2개를 입력받아 그대로 출력하기 6 | 1 | 64 | 20019 | 4371 | 21.8 |
3009 | 2711 | 90.1 |
||||
00a26 | 입력받은 정수 1개를 Hello KOI와 함께 출력하기 1 | 1 | 64 | 5773 | 2115 | 36.6 |
1857 | 1727 | 93.0 |
||||
00a56 | Hello, World! 출력하기 25 | 1 | 64 | 11991 | 3287 | 27.4 |
2527 | 2257 | 89.3 |
||||
00a58 | 입력된 값은 OOO 입니다. (정수) 8 | 1 | 64 | 5739 | 1246 | 21.7 |
1268 | 1087 | 85.7 |
||||
00a59 | 입력된 값은 OOO 입니다. (문자열) 1 | 1 | 64 | 4717 | 971 | 20.6 |
970 | 837 | 86.3 |
예제
위의 문제들 중에서 00a26 를 풀어보겠습니다.
이 문제는 1개의 정숫 값을 입력받고, 첫번째 줄에 "Hello KOI"와 함께 그대로 출력하는 문제입니다. 즉, 입력받은 값에 대해서 어떠한 '계산'을 하지 않으므로,
입력 받은 텍스트 값을 숫자로 변환할 필요는 없습니다.
또한, 명령문의 순서만 조정하면 변수 없이 처리 가능합니다.
즉, "Hello KOI"를 먼저 출력한 후, 정숫 값을 입력받자마자 출력하는 방식이면 가능할 거 같군요.. 아직 변수를 배우지 않았으므로, 자세한 내용은 나중에 설명 드리겠습니다.
먼저, "Hello KOI" 출력합니다. 그리고, 입력 한 줄을 받고 그것을 바로 출력합니다. 아래와 같이 말입니다.
그러나, 이렇게 하면 이 문제는 틀리게 됩니다. 이 문제는 첫번째 줄에 "Hello KOI"와 함께 입력값을 출력해야 합니다.
print by line 블록은 값을 출력한 후 항상 맨 마지막에 '개행'을 하기 때문에, 그 다음 블록은 2번째 줄에 출력됩니다.
이렇게 라인 끝에서 개행되는 것일 막기 위해서는 다음의 print end = 명령문을 사용해야 합니다.
자.. 그럼 이렇게 하면 되겠네요. 출력 화면을 보면, 올바르게 출력되는 것을 확인할 수 있습니다.
참~ 쉽지요? 다른 문제들로 쉽게 해결할 수 있을겁니다.
Coding is fun!