728x90

알고리즘 4

[C] 백준 9012 괄호

문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으로 주어진 괄호 문자열..

[C] 백준 10870 피보나치

문제피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.n=17일때 까지 피보나치 수를 써보면 다음과 같다.0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.학습나는 재귀 문제를 풀 때 마다 바보가된 것 같은 느낌을 받는다.. 피보나치 문제는 사실 굉장히 고전문제라 C에 처음 입문할 때 이미 풀어봤던 문제였기에 쉽게 풀 수 있을거라 생각했지만... 머리가 안돌아가서 F1 = F2; F2 ..

[C] 백준 10872 팩토리얼

문제 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. 학습 문제 자체는 쉬운 편이였으나 좋은 알고리즘이란 무엇인가에 대해 고찰해본 후 나는 문제를 푸는 것만이 다가 아니라는 것을 새롭게 알게되었다. 이번과 같은 문제도 여러가지 방법으로 풀 수 있을텐데, 예를들면 내가 작성한 코드 외에도 입력받고 sum으로 더하는 부분을 함수로 작성하는 등이 있다. 조금 쉬운 문제는 여러 방법으로 고안하여 백준(BOJ) 숏코딩 랭커가 될 수 있도록 한번 생각해보아야겠다. 이 문제의 숏코딩 랭커 코드길이는 48B~55B정도 된다. 필자도 코드를 최대한 줄여보려고 했으나 138B가 최대였다..(랭킹으로 따지자면 350등 정도다) 아직 한참 부족하다고 느꼈다. 무튼! 코드를 제출했다고 문..

[JAVA] 백준 10952 A+B-5 (좋은 알고리즘이란)

문제두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.학습문제를 풀고 문제 번호를 구글링해보다가 흥미로운 티스토리를 발견했다. (st-lab.tistory.com/39) 인데 이 문제를 여러가지 알고리즘으로 풀어놓은 글이다. 좋은 개발자가 되려면 1. 메모리용량를 적게쓰고(공간복잡도) 2. 시간이 적게걸리는(시간복잡도) 코드를 프로그래밍해야한다고 자료구조 수업에서 배운적이 있다.지금 내가 작성한 코드를 살펴보면 다음과같다. 맨 위에 제출한 코드는System.out.printf("%d\n",a+b);로 작성했고 맨 아래에 제출한 코드는System.out.println(a+b);로 바꾸어 작성하였다. 메모리 크기나 풀이속도에서 크게 차이가 나진 않지만 printf와 \n을 사용하는 ..

728x90