구슬목걸이 BEADS 최근김교수는구슬목걸이를만드는시스템 UBS(Ultimate Bead Swapper, 최고의구슬교환기 ) 를만들었다. UBS( 최고의구슬교환기 ) 는인접한구슬을교환하여매혹적인구슬목걸이를만들어낸다. UBS는상-하방향으로나란히놓여있는 N개의컨베이어벨트로이

Similar documents
Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

금오공대 컴퓨터공학전공 강의자료

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - chap06-1Array.ppt

OCW_C언어 기초

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

C 프로그램의 기본

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

PowerPoint Presentation

중간고사

PowerPoint 프레젠테이션

설계란 무엇인가?

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

Spanning Tree Protocol (STP) 1

< 고급 C 프로그래밍및실습 > 11 장구조체실습문제 문제에대한안내 - 특별한언급이없으면문제의조건에맞지않는입력은입력되지않는다고가정하라. - 특별한언급이없으면, 각줄의맨앞과맨뒤에는공백을출력하지않는다. - 출력예시에서 는각줄의맨앞과맨뒤에출력되는공백을의미한다. - 입출력예시

Microsoft PowerPoint - chap06-2pointer.ppt

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

11장 포인터

Microsoft PowerPoint - additional01.ppt [호환 모드]

C 언어 프로그래밊 과제 풀이

PowerPoint Presentation

설계란 무엇인가?

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap06-4 [호환 모드]

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint 웹 연동 기술.pptx

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

02장.배열과 클래스

Slide 1

슬라이드 1

<C6F7C6AEB6F5B1B3C0E72E687770>

서강대학교공과대학컴퓨터공학과 (1/5) CSE3081 (2 반 ): 알고리즘설계와분석 < 프로그래밍숙제 2> (v_1.0) 담당교수 : 임인성 2015 년 10 월 13 일 마감 : 10 월 31 일토요일오후 8 시정각 제출물, 제출방법, LATE 처리방법등 : 조교가

수험번호 성 명 2013 다음커뮤니케이션직무능력테스트 감독관서명 < 본문서는외부비공개문서입니다. 무단배포시법적인챀임을물을수있습니다 > 1

Microsoft PowerPoint - C++ 5 .pptx

KNK_C_05_Pointers_Arrays_structures_summary_v02

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap10-함수의활용.pptx

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

쉽게 풀어쓴 C 프로그래밍

PowerPoint Template

슬라이드 1

PowerPoint Presentation

Microsoft PowerPoint - chap06-5 [호환 모드]

제 5강 리만적분

PowerPoint 프레젠테이션

Data Structure

adfasdfasfdasfasfadf

untitled

Microsoft PowerPoint APUE(Intro).ppt

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

게시판 스팸 실시간 차단 시스템

PowerPoint 프레젠테이션

PowerPoint Presentation

PowerPoint Presentation

C++ Programming

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

API 매뉴얼

Microsoft PowerPoint UNIX Shell.ppt

PowerPoint Presentation

PowerPoint 프레젠테이션

Microsoft PowerPoint - Java7.pptx

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

Chap 6: Graphs

Microsoft Word - PLC제어응용-2차시.doc

Slide 1

Microsoft PowerPoint - Chapter_08.pptx

Microsoft PowerPoint UNIX Shell.pptx

API 매뉴얼

Japanese Olympiad in Informatics 05/06 Spring Training Camp/Qualifying Trial Contest Day, March 9 5, 06, Komaba/Yoyogi, Tokyo 단, Answer를 호출 할 때는, 다음의

Microsoft PowerPoint - chap11-포인터의활용.pptx

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

슬라이드 1

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

제 3강 역함수의 미분과 로피탈의 정리

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

PowerPoint Template

C++ Programming

PowerPoint 프레젠테이션

3.2 함수의정의 Theorem 6 함수 f : X Y 와 Y W 인집합 W 에대하여 f : X W 는함수이다. Proof. f : X Y 가함수이므로 f X Y 이고, Y W 이므로 f X W 이므로 F0이만족된다. 함수의정의 F1, F2은 f : X Y 가함수이므로

tiawPlot ac 사용방법

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - chap01-C언어개요.pptx

Chapter #01 Subject

17장 클래스와 메소드

Transcription:

시험시간 : 5 시간 3 문제 All questions should be attempted

구슬목걸이 BEADS 최근김교수는구슬목걸이를만드는시스템 UBS(Ultimate Bead Swapper, 최고의구슬교환기 ) 를만들었다. UBS( 최고의구슬교환기 ) 는인접한구슬을교환하여매혹적인구슬목걸이를만들어낸다. UBS는상-하방향으로나란히놓여있는 N개의컨베이어벨트로이루어져있다. N개의컨베이어벨트는왼쪽부터오른쪽으로 1부터 N까지번호가매겨져있다. 벨트는위에서아래방향으로모두같은속도로움직인다. 인접한컨베이어벨트사이에는 M개의구슬교환기가있다. 위로부터같은거리에는단하나의구슬교환기만존재한다. 즉, M개의구슬교환기를위로부터의거리가적은교환기로부터순서대로 1부터 M까지번호를매길수있다. ( 그림 1. 참조 ) 그림 1. 5 개의컨베이어벨트와 5 개의구슬교환기로이루어짂 UBS(Ultimate Bead Swapper) UBS를사용하기위해서는모든컨베이어벨트의맨윗부분 ( 시작부분 ) 에하나씩의구슬을놓아둔다. N개의컨베이어벨트에있는 N개의구슬이같은속도로같이내려오다가구슬교환기 (swapper) 를만나면교환기가걸쳐져있는두컨베이어벨트의구슬들은서로위치가바뀐다. 구슬이바뀌어짂후에모든구슬은같은수평위치를유지하며같은속도로내려온다 ( 그림. 참조 ). 모든구슬이컨베이어벨트의맨아랫부분 ( 끝부분 ) 에도착하면하나의구슬목걸이가만들어지게된다. 해야할작업컨베이어벨트의수 N과구슬교환기의수 M, 그리고구슬교환기의위치가주어질때아래의질문에답하는프로그램을작성하라. 주어짂 K, J에대하여, 컨베이어벨트번호 K의맨윗부분에있던구슬이구슬교환기 J번이있는위치를지난후에는어느컨베이어벨트에있는가? Korean version 1.4 1

BEADS (a) (b) 그림. (a) 4개의구슬이구슬교환기를지나기전상태 (b) 구슬교환기에의해 번구슬과 3번구슬의위치가서로바뀜입력모든입력은표준입력으로한다. 첫번째줄에는컨베이어벨트의수 N(1 N 300,000) 과구슬교환기의수 M(1 M 300,000) 이주어짂다. 구슬교환기들은위에서부터아래의순서로 M줄에걸쳐주어짂다. 각줄에는하나의정수 P(1 P M-1) 가주어지는데이는컨베이어벨트 P와 P+1사이에구슬교환기가있음을의미한다. 상호작용 모든입력을읽은후, 여러분들의프로그램은테이블 1. 에명시된라이브러리에있는함수를아래 에지시된순서대로호출하여야한다. 1. 질문의수 Q(1 Q 300,000) 를찾기위해 getnumquestions 함수를호출하여야한다.. Q번동안아래의함수를호출한다. (a) getquestion 함수를호출하여질문을하나받아온다. (b) answer 함수를호출하여여러분들이구한답을전해준다. getnumquestions 함수는처음에단한번만호출하여야한다. getquestion과 answer함수는반드시교대로호출되어야한다. 즉, getquestion 함수를호출한후 answer 함수를호출하기까지 getquestion 함수를호출하면안된다. 거꾸로도역시마찬가지다. 만약이것을지키지않으면 0 점을받게될것이다. 프로그래밍지침만약 언어로작성된프로그램을제출할경우, 프로그램소스코드내에는다음의문장이반드시포함되어있어야한다 : uses beadslib; 만약 C나 C++ 언어로작성된프로그램을제출할경우, 프로그램소스코드내에는다음의문장이반드시포함되어있어야한다 : #include beadslib.h Korean version 1.4

BEADS Function Prototype function getnumquestions():integer C and C++ int getnumquestions() Description 질문의수를되돌려주는함수이다. procedure getquestion(var K:integer, var J:integer) C void getquestion(int *K, int *J) C++ void getquestion(int &K, int &J) procedure answer(x:integer) C and C++ void answer(int x) 하나의질문 K와 J를가져온다. K는시작할때 ( 맨윗부분 ) 의구슬이있는컨베이어벨트번호이고, J는구슬교환기번호이다. 가장최근의 getquestion 함수에대하여답을구한컨베이어벨트의위치 x를전해준다. 테이블 1. 상호작용라이브러리연습용라이브러리와예제프로그램여러분에게는예제라이브러리와예제프로그램의소스코드가하나의압축파일로제공이된다. 이압축파일에는각, C 와 C++ 언어를위한세개의디렉토리 pascal, c, cpp 가있다. 각각의디렉토리에는연습을위한상호작용라이브러리의소스코드와지침에맞게작성된예제프로그램의소스코드가들어있다. 언어부분에는연습용상호작용라이브러리가 beadslib 유닛 (unit) 에포함되어있고, 소스코드는파일 beadslib.pas에주어져있다. 파일 sample.pas에는라이브러리를바르게사용하는예제프로그램이들어있다. C 언어부분에는연습용라이브러리함수의프로토타입 (prototype) 들이 beadslib.h에주어져있고, 함수의내용은 beadslib.c에들어있다. 파일 sample.c에는라이브러리를바르게사용하는예제프로그램이들어있다. C++ 언어부분에는연습용라이브러리함수의프로토타입 (prototype) 들이 beadslib.h에주어져있고 ( 파일의내용은 C언어부분의것과같지않음 ), 함수의내용은 beadslib.cpp에들어있다. 파일 sample.cpp에는라이브러리를바르게사용하는예제프로그램이들어있다. 연습용라이브러리는다음과같이동작한다. 연습용라이브러리의함수 getnumquestions를호출하면파일 questions.txt에서질문의수를읽고, 읽은값을되돌려준다. 함수 getquestion을호출하면파일 questions.txt에서 K와 J를읽는다. 함수 answer를호출하면인수 x를표준출력장치로출력한다. 잘못된순서로함수를호출할때마다표준출력장치에오류메시지가출력된다. 파일 questions.txt의첫번째줄에는질문의수 Q가들어있다. 그다음 Q개의줄에는각줄에두정수컨베이어벨트의번호 K와구슬교환기번호 J가주어져있다. Korean version 1.4 3

BEADS 입력예 5 5 4 1 3 3 ( 이예는그림 1과같다 ) 예제 questions.txt의내용 3 4 5 5 예제상호작용 Function Call getnumquestions(); getquestion(k, J); C getquestion(&k, &J); C++ getquestion(k, J); answer(1); getquestion(k, J); C getquestion(&k, &J); C++ getquestion(k, J); answer(4); 함수의리턴값과설명 이프로그램은두개의질문이있다. K=3, J=4 UBS 의컨베이어벨트 3 번의맨윗부분에있던구슬이구슬교환기 4 번이있는위치를지난후에는몇번의컨베이어벨트에있는가? 모든구슬이구슬교환기 4 번이있는위치를지난후, 질문에서의구슬은 1 번컨베이어벨트에있다. K=5, J=5 UBS 의컨베이어벨트 5 번의맨윗부분에있던구슬이구슬교환기 5 번이있는위치를지난후에는몇번의컨베이어벨트에있는가? 모든구슬이구슬교환기 5 번이있는위치를지난후, 질문에서의구슬은 4 번컨베이어벨트에있다. 시간및메모리제한 프로그램은 초이내에수행되어야하고, 사용메모리는 56MB 를넘을수없다. 채점방법 각입력에대해지시한대로함수를호출하고또한답이맞으면만점, 틀리면 0 점이주어짂다. 테스트데이터에서 M 과 Q 가 10,000 이하인경우의점수는 0 점이다. Korean version 1.4 4

도로 ROADS 뉴아시아왕국에는 M개의도로로연결된 N개의마을이있다. 어떤도로들은자갈로, 그리고다른도로들은콘크리트로포장이되어있다. 무료도로를유지하기위해서는많은경비가필요하기때문에이왕국에서모든도로를무료화하는것은불가능하여보인다. 따라서새로운도로유지방안이필요하다. 왕은무료도로의수를가능한한최소화하되, 어떤마을에서다른마을로갈때반드시오직하나의무료도로로이루어짂경로가있도록결정하였다. 또한콘크리트도로가현대교통에적합하지만, 왕은자갈길을걷는것이매우흥미있다고생각하였다. 결과적으로왕은정확히 K개의자갈도로를무료도로로유지하기로결정하였다. 예를들어뉴아시아왕국의마을과도로는그림 1a와같다. 만일왕이 개의자갈도로를무료로하고자하면, 왕국은그림 1b와같이 (1, ), (, 3), (3, 4), (3, 5) 를무료로하여야한다. 이계획은왕의요구사항을만족하는데그이유는 (1) 모든두마을이무료도로를통하여연결되어있으며, () 가능한가장적은수의무료도로를가지고있고, (3) 정확히두개의무료자갈도로를포함한다 : (, 3) 과 (3, 4) 그림 1: (a) 뉴아시아왕국의마을과도로예. 실선은콘크리트도로를점선은자갈도로를뜻함. (b) 정확히두개의무료자갈도로를포함하는도로유지방안. 무료도로만표시되었음. 해야할작업 뉴아시아왕국의도로와왕이원하는무료자갈도로의수가주어졌을때, 왕의요구사항을만 족하는도로유지방안이있다면그방안을출력하는프로그램을작성하는것이다. 입력첫번째줄에는세개의정수가하나의빈칸을사이에두고주어짂다. N, 마을의개수 (1 N 0,000), M, 도로의개수 (1 M 100,000), 그리고 K, 왕이무료로유지하기를원하는자갈도로의개수 (0 K N-1) Korean-version 1.4 1

ROADS 다음 M 줄에는 1에서부터 M까지의도로가기술된다. (i + 1) 번째줄은도로 i를뜻한다. 여기에는세개의정수가하나의빈칸을사이에두고주어짂다 : u i 와 v i, 도로 i에의해연결되는두마을. 마을은 1부터 N으로표시되며, c i 는도로 i의종류 ; c i = 0은자갈도로, c i = 1은콘크리트도로를뜻한다. 인접한두마을을연결하는도로는하나뿐이다. 출력만일왕의요구사항을만족하는도로유지방안이없다면, 여러분의프로그램은 no solution을첫번째줄에출력하여야한다. 그렇지않은경우, 여러분의프로그램은유효한도로유지방안의무료도로들을한줄에하나씩열거하여출력하여야한다. 도로는입력시주어짂형태로출력이되어야하나, 도로의순서는어떤순서라도무방하다. 만일유효한도로유지방안이여러개가있는경우, 그중하나만출력하면된다. 입력예출력예 5 7 3 0 1 3 0 4 3 0 4 5 1 1 1 3 0 5 3 1 5 3 1 ( 이출력예는그림 1b와같다 ) 4 3 0 1 1 4 1 ( 이출력예는그림 1a와같다 ) 시간및메모리제한 프로그램은 1 초이내에수행되어야하고, 사용메모리는 18MB 를넘을수없다. 채점방법 각입력에대하여정답이면만점, 틀리면 0 점이주어짂다. 테스트데이터에서 K 값이 10 이하인경우의점수는 0 점이다. Korean-version 1.4

DNA DNA 컴퓨터를이용하여해결하는흥미로운작업중하나는 DNA 서열과같은생물학적인자료를분석하는것이다. 하나의 DNA 가닥은뉴클레오티드인아데닌, 사이토싞, 구아닌, 티민으로이루어진체인이다. 이들네개의뉴클레오티드는각각 A, C, G, T 로나타낸다. 따라서 DNA 가닥은이들네문자의문자열로표현될수있다. 이문자열을 DNA 서열이라부른다. DNA 가닥의어떤위치에있는뉴클레오티드가정확하게무엇인지결정핛수없는경우가있다. 이러핚경우, 이가닥의 DNA 서열의미확인뉴클레오티드를나타내는데문자 N 을사용핚다. 달리말하면, N 은 A, C, G, T 중임의의문자하나를위핚와일드카드문자이다. 핚개이상의 N 이있는 DNA 서열을불완전서열이라부르고, 그렇지않은문자열을완전서열이라부른다. 불완전서열에있는 N 각각에대하여이를네개의뉴클레오티드중하나로대체하여완전서열을얻을수있으면, 이완전서열을주어진불완전서열과일치핚다고말핚다. 예를들어, ACCCT 는 ACNNT 과일치하지맊 AGGAT 는일치하지않는다. 연구자들은네개의뉴클레오티드를다음과같이영문자순서대로순서를정핚다 : A 는 C 보다앞에나오고, C 는 G 보다앞에나오고, G 는 T 보다앞에나온다. DNA 서열에서각뉴클레오티드가오른쪽옆에있는뉴클레오티드와같든지혹은오른쪽옆에있는뉴클레오티드보다이전순서의문자이면, 이서열은형태-1 로분류된다. 예를들어, AACCGT 는형태-1 이지맊 AACGTC 는아니다. 일반적으로형태-j 서열은다음과같이정의된다 : 이서열이형태-(j-1) 이든지혹은어떤형태- (j-1) 서열하나와어떤형태-1 서열하나를연결핚것이면이를형태-j 서열이라핚다. 예를들어, AACCC, ACACC 와 ACACA 는형태-3 서열이지맊, GCACAC 와 ACACACA 는형태-3 서열이아니다. 연구자들은사전에단어들을나열하는순서인사전식순서대로 DNA 서열들의순서를정핚다. 따라서길이 5 인형태-3 서열들중첫번째순서의서열은 AAAAA 이고마지막순서의서열은 TTTTT 이다. 다른예로불완전서열 ACANNCNNG 를고려해보자. 이불완전서열과일치하는형태-3 서열들중첫번째부터순서대로 7 개를나열하면다음과같다 : ACAAACAAG ACAAACACG ACAAACAGG ACAAACCAG ACAAACCCG ACAAACCGG ACAAACCTG 해야할작업 길이 M 인불완전서열과일치하는문자들중 R 번째순서의형태 -K 서열을찾는프로그램을 작성하시오. Korean version 1.5 1

DNA 입력첫번째줄에세개의정수가빈칸하나를사이에두고주어진다 : M(1 M 50,000), K(1 K 10) 과 R(1 R x10 1 ). 두번째줄에불완전서열인길이 M 의문자열이주어진다. 불완전서열과일치하는형태-K 서열의개수는 4x10 18 이하이다. 그러므로이것은 C 나 C++ 에서 long long 으로나타낼수있고 에서는 Int64 로나타낼수있다. 또핚 R 은주어진불완전서열과일치하는형태-K 서열의개수보다같거나작다. 출력 입력으로주어진불완전서열과일치하는형태 -K 서열들중 R 번째것을첫번째줄에출력하시오. 입력예 1 출력예 1 9 3 5 ACAAACCCG ACANNCNNG 입력예 출력예 5 4 10 ACAGC ACANN 프로그래밍유의사항 C 나 C++ 에서는 long long 자료형을사용해야핚다. 다음코드는 long long 형의자료의 표준입력출력방법을보여준다. long long a; scanf("%lld",&a); printf("%lld\n",a); 에서는 Int64 자료형을사용해야핚다. 이형의자료를다루는데특별핚명령어는 필요하지않는다. 시간및메모리제한 프로그램은 1 초이내에수행되어야하고, 사용메모리는 18 MB 를넘을수없다. 채점방법 각입력에대하여정답이면맊점, 틀리면 0 점이주어진다. 테스트데이터에서 M 값이 10 이하인경우의점수는 0 점이다. Korean version 1.5