728x90

프로그래밍 51

[JAVA] 백준 10951 A+B -4 (Scanner메소드-hasNextInt)

문제두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.입력은 여러 개의 테스트 케이스로 이루어져 있다.각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)학습쉬울 줄 알고 얕봤다가 조금 당황했던 문제다. 두 수를 입력받아 합을 출력하는 간단한 문제이지만, 입력받을 테스트 케이스의 개수와 종료조건이 명시되어있지 않아 자칫 쉽게 생각했다가는 Error가 발생한다. 따라서 입력으로부터 더이상 읽을 수 있는 데이터가 없음을 나타내야하는데 C나 C++에서는 주로 EOF(End of File)로 나타낸다. 만약 이 문제를 C로 풀었다면while (scanf("%d %d".&A,&b) !=EOF)라는 코드를 작성했을 것이다. 자바에서도 비슷..

[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을 사용하는 ..

[JAVA] 백준 2742 기찍N

문제 자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. 학습 for 을 반복문을 알고있으면 쉽게 풀 수 있는 문제다. 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); scanner.close(); for (int i = n; i > 0; --i) { System.out.println(i); } } } 출처 www.acmicpc.net/problem/2742 2742번: 기찍 N 자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩..

[JAVA] 백준 8393 합

문제 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. 학습 C를 1년정도 공부하기도 했고(아직 갈길이 먼 거 안다), 또 전공과목에도 있고.. 해서 자바를 새롭게 시작하게 되었다. 예전부터 백앤드 개발에 관심이 있어 자바를 배워보고싶었는데, 이렇게 반 강제적으로 시작하게 될 줄이야! 아직 입력과 출력, 반복문정도밖에 못하는 코린이지만 C에서 배웠던걸 상기시켜보며 공부해보려 한다. C로 풀기에 너무 쉬워서 넘어갔던 백준 저지 문제를 아마 자바로 풀어 올릴 것 같다. 사용자로부터 입력을 받으려면 java.util.Scanner이라는 파일을 import해야 한다는 것과 입력 전 후로 Scanner scanner = new Scanner(System.in)과 scanner.close()를 ..

[C] 백준 10773 제로

문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다. 정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할 수 ..

[C] 백준 10828 스택 (strcmp, strncmp) - 문자열 비교] 백준 10828 스택 (strcmp, strncmp) - 문자열

문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 다섯 가지이다.push X: 정수 X를 스택에 넣는 연산이다.pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 스택에 들어있는 정수의 개수를 출력한다.empty: 스택이 비어있으면 1, 아니면 0을 출력한다.top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.-첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다...

[C] 백준 1002 터렛 ✈️

문제 조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다. 다음은 조규현과 백승환의 사진이다. 이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다. 조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다. 조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고, 조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때, 류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오. -첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 이루어져 있다. 한 줄에 x1, y1, r1, x2, y2, r2가 주어진다. x1, y1..

728x90