728x90

백준 7

[C] 백준 7568 덩치

문제우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165) 라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의 덩치가 각각 (45, 181), (55, 173)이라면 몸무게는 D가 C보다 더 무겁고, 키는 C가 더 크므로, "덩치"로만 볼 ..

[C] 백준 1065 한수

문제어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.학습문제를 정확하게 이해하기 위해 예제로 주어진 입력과 출력을 살펴보았다. 예제 1번(110 -> 99)을 통해 100 미만의 수는 등차수열을 이루는 조건이 부족하므로 (예, 45, 56은 공차가 1로 판단) 전부 한수에 포함된다는 것을 알게되었다. 따라서 100미만의 수는 입력 N을 그대로 출력해준다. 입력받은 세자리 수 정수를 각각의 자리수로 분리하여 저장한 후 공차에 따라 cnt를 증가시킨 후..

[JAVA] 백준 8958 OX퀴즈 (String과 char 자료형의 차이, charAt())

문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다. 학습 앞 문제와 비슷하게 문제에서 제시하는 대로 풀면 된다. 나는 로직을 다음과같이 세웠다. 1. 문자를 입력받는 배열을 선언한다. 2. f..

[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