2020-11-06 문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. import java.util.Arrays; import java.util.Scanner; public class TemplateA { public static void main(String[] args) { Scanner scan = new Scanner(..
2020-11-05 싱글톤(Singleton)이란 전체 프로그램 내에서 하나의 객체만을 만드는 것을 이야기한다. 이는 싱글톤을 선언한 class 이외에 다른 곳에서 new를 이용한 새로운 생성자를 만드는 것을 제한하는 의미라고도 볼 수 있다. 싱글톤을 코드화 하기 위해서는 객체 앞에 private를 붙여 주어 선언된 class에서만 생성 가능하게 만들어 주면 된다. 구체적으로 코드로는 어떻게 선언되는지 알아보자. public class singleton { private static singleton st = new singleton(); private singleton() {} static singleton getSt() { return st; } } 위에는 싱글톤 객체를 생성하는 클래스이며, 아래는 ..
2020-11-04 문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다. 출력 각 테스트 케이스마다 점수를 출력한다. import java.util.Scanner; public class ..
2020-11-03 문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. 힌트 39, 40, 41, 42, 43, 44, 82, 83, 84, 85를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 모..
2020-11-02 문제 세 개의 자연수 A, B, C가 주어질 때 A×B×C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오. 예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다. 입력 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다. 출력 첫째 줄에는 A×B×C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A×B×C의 결과에 1부터 9까지의 숫자가 각각 ..
2020-11-01 단어 뜻에서도 알 수 있듯이 Infinity는 무한대라는 의미를 가지고 있고, NaN은 (Not a Number) 숫자가 아니라는 의미를 가지고 있다. 그러면 우선 어떠한 상황에서 이와 같은 결과가 나오게 되는지 알아보자. public class TemplateA { public static void main(String[] args) { double n = 10; System.out.println(n / 0.0); System.out.println(n % 0.0); } } 실수 값을 0 으로 나눈 몫의 값은 무한히 나누어질 수 있어 Colsole 창에 값이 Infinity 가 출력된 것을 확인할 수 있으며, 0으로 나눈 나머지의 값은 존재하지 않을뿐더러 숫자가 아니기 때문에, NaN..