본문 바로가기

전체 글

(229)
mountain 문제봉우리가 여러개인 산 모양을 출력한다. 산 모양은 그림과 같고 좌우 대칭이다. 입력첫 번째 줄에 숫자를 입력 받는다. 숫자의 크기는 20보다 작은 자연수이다. 출력출력 예의 형식으로 출력한다. 예제 입력3 예제 출력1213121 예제 입력5 예제 출력1213121412131215121312141213121 binary 문제와 똑같다고 볼 수 있는 문제이다. 입력이 4일때 설명해보면 그림과 같이 나타낼 수 있다.m이 mountain 함수라고 치면, m(4)를 호출했을때 양쪽에서 m(3)이 호출되는 구조로 볼수 있다. 그래서 기저조건인 1까지 내려갔을때 1을 출력하면 된다.
binary 문제숫자를 입력 받아 이진수로 출력하는 프로그램을 작성하시오. 입력첫 번째 줄에 숫자를 입력 받는다. 숫자의 크기는 1,000보다 작거나 같다. 출력첫째 줄에 숫자를 이진수로 바꾸어 출력한다. 예제 입력14 예제 출력1110 예제 입력31 예제 출력11111 이번에 재귀함수를 정리하면서 풀게된 기초문제이다. 14를 2진수로 표현해 보자. 몫을 계속 2로 나누고 몫이 1이 되었을때 나머지들을 역순으로 출력하면 된다. 주의할점은 재귀함수를 호출하고나서 나머지를 출력해야 숫자가 역순으로 나와서 답이 된다.
괄호의 값 문제4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다. X와 Y 모두 올바른 괄호열이라면 이들을 결합한 XY도 올바른 괄호열이 된다. 예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()()[]’ 은 모두 올바른 괄호열이 아니다. 우리는 어떤 올바른 괄호열 X에 대하여 그 괄호열의 값(괄호값)을 아래와 같이 정의하고 값(X)로 표시한다.‘()’ 인 괄호열의 값은 2이다.‘[]’ 인 괄호열의 값은 3이다.‘(X)’ 의 괄호값은 2×값(X) ..
접시 문제접시가 a, b, c, d 가 있고, 알파벳 순으로 한쪽이 막혀 있는 세척기에 들어간다고 할 때, b a c d 순으로 꺼내기 위해서는 push, push, pop, pop, push, pop, push, pop을 하면 된다. 세척기에서 꺼내는 순서가 주어질 때 그 동작을 출력하는 프로그램을 작성하시오. 만약 주어진 순서대로 접시를 꺼낼 수 없다면 “impossible”을 출력한다. 입력첫째 줄에 소문자 알파벳이 주어진다. 중복된 소문자 알파벳은 입력되지 않는다. 알파벳 소문자는 26개이다. 출력접시를 꺼내는 것이 가능한 경우 push, pop의 순서를 출력한다. 이것이 불가능하다면 impossible을 출력한다. 예제 입력bacd 예제 출력push push pop pop push pop push p..
괄호 문제괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으로 주어진 괄호 문자열이..
스택 (Stack) 스택(Stack)은 선형구조로 삽입(push)와 삭제(pop)연산이 한쪽 끝에서만 수행되는 자료구조 이다. 마지막에 들어온 원소가 가장먼저 삭제 되므로 Last In First Out 또는 First In Last Out 이라고 불리고, 줄여서 LIFO 또는 FILO 라고 불린다.원소를 삽입하는 연산을 push 라고 한다.원소를 삭제하는 연산을 pop 이라고 한다.만약에 스택의 사이즈만큼 원소가 꽉차있는데, 원소를 꽉찬 스택에 더 넣으려고 하면 Stack Overflow가 발생한다.스택에 있는 모든 원소들을 삭제 시켰는데, 또 삭제 연산을 하게 되면 스택이 비어있기 때문에 Stack Underflow가 발생한다.연습문제를 한번 풀어보자.출처 : AlgorithmLABS 문제이 문제에서는 스택을 구현한다...
구간의 합집합 문제구간은 [s, e] 로 나타내고, 이 의미는 s, (s+1), (s+2), …, (e-1), e 와 같이 숫자를 나열한 것을 의미한다. 예를 들어, [1, 4]는 1, 2, 3, 4로 숫자를 나열한 것을 의미한다. n개의 구간이 있고, 이 구간들의 숫자를 모두다 새로운 배열 S에 넣어 정렬을 한다. 이 때 S[i] 의 값이 무엇인지 출력하는 프로그램을 작성하시오. 예를 들어, 3개의 구간 [1, 3], [2, 10], [1, 8] 이 있고, S[5]를 알고싶다고 하자. 그러면 S = [1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 10] 이 되고, 따라서 S[5]는 3이 된다. 배열의 인덱스는 0부터 시작한다는 것에 주의하자. 입력첫 번째 줄에 ..
두 용액 문제KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다. 같은 양의 두 용액을 혼합한 용액의 특성값은 혼합에 사용된 각 용액의 특성값의 합으로 정의한다. 이 연구소에서는 같은 양의 두 용액을 혼합하여 특성값이 0에 가장 가까운 용액을 만들려고 한다. 예를 들어, 주어진 용액들의 특성값이 [-2, 4, -99, -1, 98]인 경우에는 특성값이 -99인 용액과 특성값이 98인 용액을 혼합하면 특성값이 -1인 용액을 만들 수 있고, 이 용액이..