5.H - π 계산
Time Limit: 1s Memory Limit: 128MB
DESCRIPTION
당신은 다음 계산식을 통해서 pi를 계산할 수 있습니다. i를 입력으로 받아 pi를 계산하는 프로그램을 작성하세요.
You can approximate pi by using the following series:
Write a program that displays the pi value for i.
INPUT
* Line 1 : 테스트케이스 T (1~1,000)
* Line 2 ~ T+1 : 정수 i (1~1,00000)
OUTPUT
* Line 1 ~ T : pi(소수점 네번째 자리까지 출력, 예: 11.713243의 경우 11.7132로 출력하고 11.0000의 경우 11.0000로 출력)
SAMPLE INPUT
3
9
999
99999
SAMPLE OUTPUT
3.2523
3.1425
3.1416
import java.util.Scanner;
import java.lang.Math;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt(), i, j;
double pi[] = new double[n], k;
for(i = 0; i < n; i++){
j = input.nextInt();
//pi[i] = 0;
for(k = 1; k <= j; k++)
pi[i] += 4 * (k % 2 == 0 ? -1 / (2 * k - 1) : 1 / (2 * k - 1));
}
for(i = 0; i < n; i++)
System.out.printf("%.4f\n",(int)(pi[i] * 10000) / 10000.0);
}
}
5.I - e 계산
Time Limit: 1s Memory Limit: 128MB
DESCRIPTION
당신은 다음 계산식을 통해서 e를 계산할 수 있습니다. i를 입력으로 받아 e를 계산하는 프로그램을 작성하세요.
You can approximate e using the following series:
Write a program that displays the e value for i
INPUT
* Line 1 : 테스트케이스 T (1~100)
* Line 2 ~ T+1 : 정수 i (1~100)
OUTPUT
* Line 1 ~ T : e(소수점 여섯째자리까지만 출력. sample 참고)
SAMPLE INPUT
3
2
8
20
SAMPLE OUTPUT
2.500000
2.718278
2.718281
import java.util.Scanner;
public class Main {
private static double cal_f(int n){
if(n == 0 || n == 1)
return 1;
return cal_f(n - 1) * n;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt(), i, j, k;
double e[] = new double[n];
for(i = 0; i < n; i++){
j = input.nextInt();
for(k = 0; k <= j; k++)
e[i] += 1 / cal_f(k);
}
for(i = 0; i < n; i++)
System.out.printf("%.6f\n",(int)(e[i] * 1000000) / 1000000.0);
}
}
5.J - 달력 출력
Time Limit: 1s Memory Limit: 128MB
DESCRIPTION
년과 월을 입력으로 받아 해당 월의 달력을 출력하는 프로그램을 작성하세요.
Write a program that prompts the user to enter the year and the month and displays the calendar table for the year on the console.
INPUT
* Line 1 : year (1,500~3,000)
* Line 2 : month (1~12)
OUTPUT
Sample Output 참조
SAMPLE INPUT
2013
1
SAMPLE OUTPUT
HINT
Chapter 6.11 참고
import java.util.Scanner;
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int year = input.nextInt(), month = input.nextInt();
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month-1);
c.set(Calendar.DATE, 1);
int start = c.get(Calendar.DAY_OF_WEEK);
int last = c.getActualMaximum(Calendar.DATE);
int i, j, date = 1, line = 0;
System.out.println("Sun Mon Tue Wed Thu Fri Sat");
for(i = 1; date <= last; i++){
line++;
if(i < start)
System.out.print(" ");
else
System.out.printf("%2d",date++);
if(line % 7 != 0 && date != last + 1){
if(i >= start)
System.out.print(" ");
}
else
System.out.println();
}
}
}
5.K - 많이 나타난 정수
Time Limit: 1s Memory Limit: 128MB
DESCRIPTION
N개의 정수를 입력으로 받아, 가장 많이 나타난 정수와 그 개수를 출력하는 프로그램을 작성하세요. 만약 3 5 2 5 5 5을 입력으로 받는다면 가장 많이 나타난 정수는 5이고 그 개수는 4입니다.
Write a program that reads integers, finds the most frequent number of them, and counts its occurrences. Suppose that you entered 3 5 2 5 5 5; the program finds that the most frequent number is 5 and the occurrence count for 5 is 4.
INPUT
* Line 1 : 정수의 개수 N (1~1,000)
* Line 2 ~ N+1 : 정수(-1,000,000,000 ~ 1,000,000,000)
OUTPUT
* Line 1 : 가장 많은 정수(중복되는 경우 없다고 가정 ex. 가장 많은 정수의 개수가 n일때 x도 n번 y도 n번 나오는 경우 없음)
* Line 2 : 가장 많은 정수의 개수
SAMPLE INPUT
6
3
5
2
5
5
5
SAMPLE OUTPUT
5
4
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt(), i, data[] = new int[n], count[] = new int[n], j, max = 0;
for(i = 0; i < n; i++){
data[i] = input.nextInt();
for(j = 0; j <= i; j++){
if(data[i] == data[j])
count[i]++;
}
}
for(i = 1; i < n; i++){
if(count[max] < count[i])
max = i;
}
System.out.printf("%d\n%d", data[max], count[max]);
}
5.L - 2진표현
Time Limit: 1s Memory Limit: 128MB
DESCRIPTION
Short 범위에 해당되는 값을 입력 받아, binary로 출력하는 프로그램을 작성하세요.
A short value S is stored in 16 bits. Write a program that prompts the user to enter a short integer and displays the 16 bits for the integer.
INPUT
* Line 1 : 테스트케이스 T (1~1,000)
* Line 2 ~ T+1 : S (-32,768~32,767)
OUTPUT
* Line 1 ~ T : S에 대한 bit 표현
SAMPLE INPUT
2
5
-5
SAMPLE OUTPUT
0000000000000101
1111111111111011
HINT
You need to use the bitwise right shift operator (>>) and the bitwise AND operator (&), which are covered in Appendix G, Bitwise Operations.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
short n = input.nextShort(), data[] = new short[n], i, j;
for(i = 0; i < n; i++)
data[i] = input.nextShort();
for(i = 0; i < n; i++){
for(j = 15; j >= 0; j--)
System.out.print((data[i] >> j) & 1);
System.out.println();
}
}
}
5.M - 모음과 자음의 개수
Time Limit: 1s Memory Limit: 128MB
DESCRIPTION
A, E, I, O, U를 모음이라고 가정했을때, 입력으로 들어온 문자열이 몇개의 모음과 자음으로 구성되어 있는지 출력하는 프로그램을 작성하세요.
Assume letters A, E, I, O, and U as the vowels. Write a program that prompts the user to enter a string and displays the number of vowels and consonants in the string.
INPUT
* Line 1 : 테스트케이스 T (1~1,000)
* Line 2 ~ T+1 : 문자열 (공백을 포함하며 길이는 100을 넘지 않는다)
OUTPUT
* Line 1 ~ T : vowels consonants (공백으로 나누어서 출력)
SAMPLE INPUT
2
Programming is fun
Hello World
SAMPLE OUTPUT
5 11
3 7
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt(), i, j, count[][] = new int[n][2];
String data = input.nextLine();
char c;
for(i = 0; i < n; i++){
data = input.nextLine();
data = data.toLowerCase();
for(j = 0; j < data.length(); j++){
c = data.charAt(j);
switch(c){
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
count[i][0]++;
break;
case ' ':
break;
default:
count[i][1]++;
}
}
}
for(i = 0; i < n; i++)
System.out.println(count[i][0] + " " + count[i][1]);
}
}
5.N - Longest common string (난이도:고급)
Time Limit: 1s Memory Limit: 128MB
DESCRIPTION
N개의 문자열을 입력으로 받아, 모든 문자열이 공통으로 가지는 longest common string을 출력하는 프로그램을 작성하세요.
Write a program that prompts the user to enter N strings and displays the longest common string of the N strings.
INPUT
* Line 1 : 문자열의개수 N (1~100)
* Line 2 ~ N+1 : 문자열 (공백을 포함하며 길이는 100을 넘지 않는다)
OUTPUT
* Line 1 : N개의 문자열에서 동일하게 나타나는 longest common string을 출력
SAMPLE INPUT
4
AABB
AAABC
AABCC
AAAAA
SAMPLE OUTPUT
AA
import java.util.Scanner;
public class Main {
private static String find(String[] data, int n){
int i, j, k;
String s, ans = "";
for(i = 0; i < data[0].length(); i++){
for(j = i + 1; j <= data[0].length(); j++){
s = data[0].substring(i, j);
for(k = 1; k < n; k++)
if(!data[k].contains(s))
break;
if(k == n && ans.length() < s.length())
ans = s;
}
}
if(ans.length() == 0)
return "";
return ans;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt(), i, j;
input.nextLine();
String data[] = new String[n];
for(i = 0; i < n; i++)
data[i] = input.nextLine();
System.out.println(find(data, n));
}
}
'학부공부 > Java_Basic' 카테고리의 다른 글
Chapter 7. Single-Dimensional Arrays[Java Basic] (0) | 2021.11.05 |
---|---|
Chapter 6. Methods[Java Basic] (0) | 2021.11.05 |
Chapter 5. Loops(1)[Java Basic] (0) | 2021.11.05 |
Chapter 4. Mathematical Functions, Characters, and Strings[Java Basic] (0) | 2021.11.05 |
Chapter 3. Selections[Java Basic] (0) | 2021.11.05 |
댓글