BAEKJOON 문제 풀이 : 15596번 정수 N개의 합
문제 : https://www.acmicpc.net/problem/15596
15596번: 정수 N개의 합
정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오. 작성해야 하는 함수는 다음과 같다. C, C11, C (Clang), C11 (Clang): long long sum(int *a, int n); a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000) n: 합을 구해야 하는 정수의 개수 리턴값: a에 포함되어 있는 정수 n개의 합 C++, C++11, C++14,
www.acmicpc.net
Main함수가 아닌, 특정 함수만 제출해야하는 문제입니다.
함수는 Java에서는 정수형 배열을 파라미터로 받고, Python에서는 정수가 들어있는 리스트를 파라미터로 받습니다.
그리고 모든 정수들의 합을 리턴합니다.
문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
|
public class Main {
long sum(int[] a) {
long result = 0;
for (int i = 0; i < a.length; i++) {
result += a[i];
}
return result;
}
}
|
cs |
2. Python 3
1
2
|
def solve(a):
return sum(a)
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 4344번 평균은 넘겠지 (0) | 2020.03.16 |
---|---|
BAEKJOON 문제 풀이 : 8958번 OX퀴즈 (0) | 2020.03.16 |
BAEKJOON 문제 풀이 : 3052번 나머지 (0) | 2020.02.20 |
BAEKJOON 문제 풀이 : 2562번 최댓값 (0) | 2020.02.17 |
BAEKJOON 문제 풀이 : 10818번 최소, 최대 (0) | 2020.02.13 |
BAEKJOON 문제 풀이 : 4344번 평균은 넘겠지
문제 : https://www.acmicpc.net/problem/4344
4344번: 평균은 넘겠지
문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 출력 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자
www.acmicpc.net
학생들의 점수가 평균치가 넘는 비율을 계산하는 문제입니다.
인풋값을 배열 또는 리스트로 입력받으면 쉽게 접근할 수 있습니다.
문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int cntLoop = Integer.parseInt(br.readLine());
for (int i = 0; i < cntLoop; i++) {
String[] arrStr = br.readLine().split(" ", -1);
int cntStudents = Integer.parseInt(arrStr[0]);
int sumScore = 0;
for (int j = 1; j < cntStudents + 1; j++) {
sumScore += Integer.parseInt(arrStr[j]);
}
float avgScore = (float) sumScore / cntStudents;
int high = 0;
for (int j = 1; j < cntStudents + 1; j++) {
if (Integer.parseInt(arrStr[j]) > avgScore)
high++;
}
bw.write(String.format("%.3f", ((float) high / cntStudents) * 100) + "%\n");
}
bw.close();
br.close();
}
}
|
cs |
2. Python 3
1
2
3
4
5
6
7
8
9
10
11
|
import sys
if __name__ == '__main__':
for i in range(int(sys.stdin.readline())):
listCase = list(map(int, sys.stdin.readline().strip().split(' ', -1)))
avg = sum(listCase[1:]) / listCase[0]
high = 0
for j in listCase[1:]:
if j > avg:
high += 1
print('%.3f' % ((high / listCase[0]) * 100) + '%')
|
cs |
아래는 for문과 if문을 한 줄로 쓰는 코딩법을 연습하기 위해 작성해본 코드입니다.
작업 시간은 약간 줄어들었지만 list를 한 번 더 사용하는거라.. 효율은 잘 모르겠습니다.
1
2
3
4
5
6
7
|
import sys
if __name__ == '__main__':
for i in range(int(sys.stdin.readline())):
listCase = list(map(int, sys.stdin.readline().strip().split(' ', -1)))
avg = sum(listCase[1:]) / listCase[0]
print('%.3f' % ((sum(list(1 for j in listCase[1:] if j > avg)) / listCase[0]) * 100) + '%')
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 15596번 정수 N개의 합 (0) | 2020.03.16 |
---|---|
BAEKJOON 문제 풀이 : 8958번 OX퀴즈 (0) | 2020.03.16 |
BAEKJOON 문제 풀이 : 3052번 나머지 (0) | 2020.02.20 |
BAEKJOON 문제 풀이 : 2562번 최댓값 (0) | 2020.02.17 |
BAEKJOON 문제 풀이 : 10818번 최소, 최대 (0) | 2020.02.13 |
BAEKJOON 문제 풀이 : 8958번 OX퀴즈
문제 : https://www.acmicpc.net/problem/8958
8958번: OX퀴즈
문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는
www.acmicpc.net
인풋을 배열로 입력받아 문자 'O'가 연속된 횟수를 더하는 문제입니다.
파이썬에서 list와 for는 떼려야 뗄 수 없는 관계라는걸 다시 한 번 생각하게된 문제였습니다.
문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int cntLoop = Integer.parseInt(br.readLine());
for (int i = 0; i < cntLoop; i++) {
char[] arrChar = br.readLine().toCharArray();
int score = 0;
int cntContinuity = 0;
for (int j = 0; j < arrChar.length; j++) {
if (arrChar[j] == 'O') {
cntContinuity++;
score += cntContinuity;
} else {
cntContinuity = 0;
}
}
bw.write(score + "\n");
}
bw.close();
br.close();
}
}
|
cs |
2. Python 3
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import sys
if __name__ == '__main__':
cntLoop = int(sys.stdin.readline())
for i in range(cntLoop):
inputData = sys.stdin.readline()
score = [0] * (len(inputData) + 1)
for j in range(len(inputData)):
if (inputData[j] == 'O'):
score[j + 1] = score[j] + 1
print(sum(score))
|
cs |
아래는 조금 더 짧게 줄인 코드입니다.
1
2
3
4
5
|
import sys
if __name__ == '__main__':
for i in range(int(sys.stdin.readline())):
print(sum(sum(range(1, len(j) + 1)) for j in sys.stdin.readline().strip().split('X')))
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 15596번 정수 N개의 합 (0) | 2020.03.16 |
---|---|
BAEKJOON 문제 풀이 : 4344번 평균은 넘겠지 (0) | 2020.03.16 |
BAEKJOON 문제 풀이 : 3052번 나머지 (0) | 2020.02.20 |
BAEKJOON 문제 풀이 : 2562번 최댓값 (0) | 2020.02.17 |
BAEKJOON 문제 풀이 : 10818번 최소, 최대 (0) | 2020.02.13 |
BAEKJOON 문제 풀이 : 3052번 나머지
문제 : https://www.acmicpc.net/problem/3052
3052번: 나머지
문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 첫째 줄에, 42로 나누었
www.acmicpc.net
주어진 수를 42로 나눈 나머지의 개수를 구하는데, 중복된 값을 제외하고 카운트하는 문제입니다.
저의 문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int[] arr = new int[10];
for (int i = 0; i < 10; i++)
arr[i] = Integer.parseInt(br.readLine());
boolean[] isExist = new boolean[42];
for (int i = 0; i < 10; i++)
isExist[arr[i] % 42] = true;
int cnt = 0;
for (int i = 0; i < 42; i++)
if (isExist[i] == true)
cnt++;
bw.write(cnt + "\n");
bw.close();
br.close();
}
}
|
cs |
2. Python 3
1
2
3
4
5
|
import sys
if __name__ == '__main__':
nums = [int(sys.stdin.readline()) % 42 for i in range(10)]
print(len(set(nums)))
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 4344번 평균은 넘겠지 (0) | 2020.03.16 |
---|---|
BAEKJOON 문제 풀이 : 8958번 OX퀴즈 (0) | 2020.03.16 |
BAEKJOON 문제 풀이 : 2562번 최댓값 (0) | 2020.02.17 |
BAEKJOON 문제 풀이 : 10818번 최소, 최대 (0) | 2020.02.13 |
BAEKJOON 문제 풀이 : 1110번 더하기 사이클 (0) | 2020.02.09 |
BAEKJOON 문제 풀이 : 2562번 최댓값
문제 : https://www.acmicpc.net/problem/2562
2562번: 최댓값
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
www.acmicpc.net
주어진 값들 중 가장 큰 값을 구하는 문제입니다.
파이썬 코드의 짧은 길이에 항상 신기하다고 느낍니다.
문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int max = Integer.parseInt(br.readLine());
int idx = 1;
for (int i = 1; i < 9; i++) {
int num = Integer.parseInt(br.readLine());
if (num > max) {
max = num;
idx = i + 1;
}
}
bw.write(max + "\n" + idx);
bw.close();
br.close();
}
}
|
cs |
2. Python 3
1
2
3
4
5
6
|
import sys
if __name__ == '__main__':
nums = [int(sys.stdin.readline()) for i in range(9)]
print(max(nums))
print(nums.index(max(nums)) + 1)
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 8958번 OX퀴즈 (0) | 2020.03.16 |
---|---|
BAEKJOON 문제 풀이 : 3052번 나머지 (0) | 2020.02.20 |
BAEKJOON 문제 풀이 : 10818번 최소, 최대 (0) | 2020.02.13 |
BAEKJOON 문제 풀이 : 1110번 더하기 사이클 (0) | 2020.02.09 |
BAEKJOON 문제 풀이 : 10871번 X보다 작은 수 (0) | 2020.02.06 |
BAEKJOON 문제 풀이 : 10818번 최소, 최대
문제 : https://www.acmicpc.net/problem/10818
10818번: 최소, 최대
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
www.acmicpc.net
주어진 숫자들 중 최대값 및 최소값을 구하는 문제입니다.
값들을 배열에 담고 간단한 반복문과 조건문을 이용해 풀었습니다.
이 문제를 풀면서 파이썬으로 for 문을 한 줄로 쓰는 방법을 배웠어요.
파이썬의 매력은 숏코딩이라고 하는데, 공부해봐야겠습니다.
문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int cntLoop = Integer.parseInt(br.readLine());
String[] strNums = br.readLine().split(" ", -1);
int[] nums = new int[strNums.length];
for (int i = 0; i < nums.length; i++) {
nums[i] = Integer.parseInt(strNums[i]);
}
int max = nums[0];
int min = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] > max) {
max = nums[i];
}
else if (nums[i] < min) {
min = nums[i];
}
}
bw.write(min + " " + max + "\n");
bw.close();
br.close();
}
}
|
cs |
2. Python 3
1
2
3
4
5
6
7
8
9
10
11
12
|
import sys
if __name__ == '__main__':
cntLoop = int(sys.stdin.readline())
nums = [int(num) for num in sys.stdin.readline().split(' ', -1)]
numMax = numMin = nums[0]
for i in range(1, cntLoop):
if nums[i] > numMax:
numMax = nums[i]
elif nums[i] < numMin:
numMin = nums[i]
print(str(numMin) + ' ' + str(numMax))
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 3052번 나머지 (0) | 2020.02.20 |
---|---|
BAEKJOON 문제 풀이 : 2562번 최댓값 (0) | 2020.02.17 |
BAEKJOON 문제 풀이 : 1110번 더하기 사이클 (0) | 2020.02.09 |
BAEKJOON 문제 풀이 : 10871번 X보다 작은 수 (0) | 2020.02.06 |
BAEKJOON 문제 풀이 : 2439번 별 찍기 - 2 (0) | 2020.02.03 |
BAEKJOON 문제 풀이 : 1110번 더하기 사이클
문제 : https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 =
www.acmicpc.net
원하는 값이 나올 때까지 연산을 무한히 반복하면 되는 문제입니다.
문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int criterion = Integer.parseInt(br.readLine());
int target = criterion;
int cnt = 1;
while (true) {
int temp = ((target % 10) * 10) + ((target / 10 + target % 10) % 10);
if (criterion == temp)
break;
target = temp;
cnt++;
}
bw.write(cnt + "\n");
bw.close();
br.close();
}
}
|
cs |
2. Python 3
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import sys
if __name__ == '__main__':
criterion = int(sys.stdin.readline())
target = criterion
cnt = 1
while True:
temp = ((target % 10) * 10) + ((target // 10 + target % 10) % 10)
if (criterion == temp):
break;
target = temp;
cnt += 1
print(cnt)
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 2562번 최댓값 (0) | 2020.02.17 |
---|---|
BAEKJOON 문제 풀이 : 10818번 최소, 최대 (0) | 2020.02.13 |
BAEKJOON 문제 풀이 : 10871번 X보다 작은 수 (0) | 2020.02.06 |
BAEKJOON 문제 풀이 : 2439번 별 찍기 - 2 (0) | 2020.02.03 |
BAEKJOON 문제 풀이 : 15552번 빠른 A+B (0) | 2020.01.26 |
BAEKJOON 문제 풀이 : 10871번 X보다 작은 수
문제 : https://www.acmicpc.net/problem/10871
10871번: X보다 작은 수
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
www.acmicpc.net
주어진 값이 기준 값보다 작은 경우를 가려내는 문제입니다.
쉬운 문제들이지만, 반복해서 풀다보니 파이썬의 문법에 조금씩 익숙해져가는 기분입니다.
문제 풀이는 아래와 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String[] strCondition = br.readLine().split(" ", -1); String[] strTargets = br.readLine().split(" ", -1); int sizeTargets = strTargets.length; int[] arrTargets = new int[sizeTargets]; int criteria = Integer.parseInt(strCondition[1]); for (int i = 0; i < sizeTargets; i++) { arrTargets[i] = Integer.parseInt(strTargets[i]); } for (int i = 0; i < sizeTargets; i++) { if (arrTargets[i] < criteria) { bw.write(arrTargets[i] + " "); } } bw.close(); br.close(); } } | cs |
1. Java
2. Python 3
1 2 3 4 5 6 7 8 9 10 | import sys if __name__ == '__main__': cntLoop, criteria = map(int, sys.stdin.readline().split(' ', -1)) listTargets = sys.stdin.readline().strip().split(' ', -1) result = '' for i in range(cntLoop): if int(listTargets[i]) < criteria: result += listTargets[i] + ' ' print(result) | cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 10818번 최소, 최대 (0) | 2020.02.13 |
---|---|
BAEKJOON 문제 풀이 : 1110번 더하기 사이클 (0) | 2020.02.09 |
BAEKJOON 문제 풀이 : 2439번 별 찍기 - 2 (0) | 2020.02.03 |
BAEKJOON 문제 풀이 : 15552번 빠른 A+B (0) | 2020.01.26 |
BAEKJOON 문제 풀이 : 2739번 구구단 (0) | 2020.01.25 |
BAEKJOON 문제 풀이 : 2439번 별 찍기 - 2
문제 : https://www.acmicpc.net/problem/2439
2439번: 별 찍기 - 2
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
www.acmicpc.net
반복문을 이용해 별 찍는 문제입니다.
대학교 1학년 C언어를 처음 배울 때 별 찍기 문제를 많이 풀어봤던 기억이 납니다.
문제를 풀 때마다 느끼는데, 파이썬으로 코드를 짧게 짤 수 있다는 것이 큰 장점인 것 같아요.
제 문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int cntLoop = Integer.parseInt(br.readLine());
for (int i = 0; i < cntLoop; i++) {
for (int j = i; j < cntLoop - 1; j++) {
bw.write(" ");
}
for (int k = 0; k < i + 1; k++) {
bw.write("*");
}
bw.write("\n");
}
bw.close();
br.close();
}
}
|
cs |
2. Python 3
1
2
3
4
5
6
|
import sys
if __name__ == '__main__':
cntLoop = int(sys.stdin.readline())
for i in range(1, cntLoop + 1):
print(' ' * (cntLoop - i) + '*' * i)
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 1110번 더하기 사이클 (0) | 2020.02.09 |
---|---|
BAEKJOON 문제 풀이 : 10871번 X보다 작은 수 (0) | 2020.02.06 |
BAEKJOON 문제 풀이 : 15552번 빠른 A+B (0) | 2020.01.26 |
BAEKJOON 문제 풀이 : 2739번 구구단 (0) | 2020.01.25 |
BAEKJOON 문제 풀이 : 10817번 세 수 (0) | 2020.01.25 |
BAEKJOON 문제 풀이 : 15552번 빠른 A+B
문제 : https://www.acmicpc.net/problem/15552
15552번: 빠른 A+B
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
www.acmicpc.net
덧셈 결과를 출력하는 간단한 문제이지만, 주어진 시간이 짧은 것이 특징입니다.
자바의 경우, Scanner와 System.out.println() 으로 입출력을 할 때 시간초과가 발생할 가능성이 있습니다.
그리고 파이썬의 경우, input() 으로 입력을 받을 때 시간초과가 발생할 가능성이 있습니다.
문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int cntLoop = Integer.parseInt(br.readLine());
for (int i = 0; i < cntLoop; i++) {
String[] nums = br.readLine().split(" ", -1);
bw.write(Integer.parseInt(nums[0]) + Integer.parseInt(nums[1]) + "\n");
}
bw.close();
br.close();
}
}
|
cs |
2. Python3
1
2
3
4
5
6
7
|
import sys
if __name__ == '__main__':
cntLoop = int(sys.stdin.readline())
for i in range(0, cntLoop):
num1, num2 = map(int, sys.stdin.readline().split(' ', -1))
print(num1 + num2)
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 10871번 X보다 작은 수 (0) | 2020.02.06 |
---|---|
BAEKJOON 문제 풀이 : 2439번 별 찍기 - 2 (0) | 2020.02.03 |
BAEKJOON 문제 풀이 : 2739번 구구단 (0) | 2020.01.25 |
BAEKJOON 문제 풀이 : 10817번 세 수 (0) | 2020.01.25 |
BAEKJOON 문제 풀이 : 2753번 윤년 (0) | 2020.01.21 |
BAEKJOON 문제 풀이 : 2739번 구구단
문제 : https://www.acmicpc.net/problem/2739
2739번: 구구단
N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.
www.acmicpc.net
구구단 출력 문제입니다.
문제 풀이는 아래와 같습니다.
1. Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int num = Integer.parseInt(br.readLine()); for (int i = 1; i < 10; i++) { bw.write(num + " * " + i + " = " + (num * i) + "\n"); } bw.close(); br.close(); } } | cs |
2. Python3
1 2 3 4 | if __name__ == '__main__': num = int(input()) for i in range(1, 10): print(str(num) + ' * ' + str(i) + ' = ' + str(num * i)) | cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 2439번 별 찍기 - 2 (0) | 2020.02.03 |
---|---|
BAEKJOON 문제 풀이 : 15552번 빠른 A+B (0) | 2020.01.26 |
BAEKJOON 문제 풀이 : 10817번 세 수 (0) | 2020.01.25 |
BAEKJOON 문제 풀이 : 2753번 윤년 (0) | 2020.01.21 |
BAEKJOON 문제 풀이 : 2588번 곱셈 (0) | 2020.01.20 |
BAEKJOON 문제 풀이 : 10817번 세 수
문제 : https://www.acmicpc.net/problem/10817
10817번: 세 수
첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)
www.acmicpc.net
주어진 세 정수 중 두 번째로 큰 수를 출력하는 문제입니다.
조건문을 이용해 풀었습니다.
문제풀이는 아래와 같습니다.
1. Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String[] strNums = br.readLine().split(" ", -1); int a = Integer.parseInt(strNums[0]); int b = Integer.parseInt(strNums[1]); int c = Integer.parseInt(strNums[2]); if ((b >= a && a >= c) || (c >= a && a >= b)) { bw.write(a + "\n"); } else if ((a >= b && b >= c) || (c >= b && b >= a)) { bw.write(b + "\n"); } else { bw.write(c + "\n"); } bw.close(); br.close(); } } | cs |
2. Python3
1 2 3 4 5 6 7 8 | if __name__ == '__main__': num1, num2, num3 = map(int, input().split(' ', -1)) if ((num2 >= num1 and num1 >= num3) or (num3 >= num1 and num1 >= num2)): print(num1) elif ((num1 >= num2 and num2 >= num3) or (num3 >= num2 and num2 >= num1)): print(num2) else: print(num3) | cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 15552번 빠른 A+B (0) | 2020.01.26 |
---|---|
BAEKJOON 문제 풀이 : 2739번 구구단 (0) | 2020.01.25 |
BAEKJOON 문제 풀이 : 2753번 윤년 (0) | 2020.01.21 |
BAEKJOON 문제 풀이 : 2588번 곱셈 (0) | 2020.01.20 |
BAEKJOON 문제 풀이 : 15792번 A/B - 2 (0) | 2020.01.19 |
BAEKJOON 문제 풀이 : 2753번 윤년
문제 : https://www.acmicpc.net/problem/2753
2753번: 윤년
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때 이다. 예를들어, 2012년은 4의 배수라서 윤년이지만, 1900년은 4의 배수이지만, 100의 배수이기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.
www.acmicpc.net
IF와 비교연산자를 익힐 수 있는 문제입니다.
문제 풀이는 아래와 같습니다.
1. Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int year = Integer.parseInt(br.readLine()); if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { bw.write("1\n"); } else { bw.write("0\n"); } bw.close(); br.close(); } } | cs |
2. Python3
1 2 3 4 5 6 | if __name__ == '__main__': year = int(input()) if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0: print('1') else: print('0') | cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 2739번 구구단 (0) | 2020.01.25 |
---|---|
BAEKJOON 문제 풀이 : 10817번 세 수 (0) | 2020.01.25 |
BAEKJOON 문제 풀이 : 2588번 곱셈 (0) | 2020.01.20 |
BAEKJOON 문제 풀이 : 15792번 A/B - 2 (0) | 2020.01.19 |
BAEKJOON 문제 풀이 : 15740번 A+B - 9 (0) | 2020.01.16 |
BAEKJOON 문제 풀이 : 2588번 곱셈
문제 : https://www.acmicpc.net/problem/2588
2588번: 곱셈
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
www.acmicpc.net
곱셈 알고리즘입니다.
파이썬의 경우, range의 옵션을 사용해볼 수 있었던 문제였습니다.
문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class B2588Multiple {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int num1 = Integer.parseInt(br.readLine());
String strNum2 = br.readLine();
String[] arrStrNum2 = strNum2.split("", -1);
for (int i = 2; i >= 0; i--) {
bw.write(num1 * Integer.parseInt(arrStrNum2[i]) + "\n");
}
bw.write(num1 * Integer.parseInt(strNum2) + "\n");
bw.close();
br.close();
}
}
|
cs |
2. Python3
1
2
3
4
5
6
7
8
|
if __name__ == '__main__':
num1 = int(input())
num2 = input()
for i in range(2, -1, -1):
print(num1 * int(num2[i]))
print(num1 * int(num2))
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 10817번 세 수 (0) | 2020.01.25 |
---|---|
BAEKJOON 문제 풀이 : 2753번 윤년 (0) | 2020.01.21 |
BAEKJOON 문제 풀이 : 15792번 A/B - 2 (0) | 2020.01.19 |
BAEKJOON 문제 풀이 : 15740번 A+B - 9 (0) | 2020.01.16 |
BAEKJOON 문제 풀이 : 10951번 A+B - 4 (0) | 2020.01.15 |
BAEKJOON 문제 풀이 : 15792번 A/B - 2
문제 : https://www.acmicpc.net/problem/15792
15792번: A/B - 2
첫째 줄에 A와 B가 주어진다. (0 < A, B ≤ 10,000)
www.acmicpc.net
나누기 알고리즘입니다.
문제에서 주어진 모든 조건을 만족하기 위해서는 소수점 1000자리까지 나타낼 수 있어야합니다.
자바의 경우 BigDecimal을 사용했으며, 파이썬의 경우 나누기 과정을 손으로 써내려가듯이 구현했습니다.
문제 풀이는 아래와 같습니다.
1. Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import java.io.BufferedReader; import java.io.InputStreamReader; import java.math.BigDecimal; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] nums = br.readLine().split(" ", -1); System.out.println(new BigDecimal(nums[0]).divide(new BigDecimal(nums[1]), 1000, BigDecimal.ROUND_HALF_UP)); br.close(); } } | cs |
2. Python3
1 2 3 4 5 6 7 8 9 10 11 12 | if __name__ == '__main__': num1, num2 = map(int, input().split(' ', -1)) result = str(num1 // num2) + '.' remain = num1 % num2 for i in range(0, 1000): remain *= 10 result += str(remain // num2) if remain == 0: break remain %= num2 print(result) | cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 2753번 윤년 (0) | 2020.01.21 |
---|---|
BAEKJOON 문제 풀이 : 2588번 곱셈 (0) | 2020.01.20 |
BAEKJOON 문제 풀이 : 15740번 A+B - 9 (0) | 2020.01.16 |
BAEKJOON 문제 풀이 : 10951번 A+B - 4 (0) | 2020.01.15 |
BAEKJOON 문제 풀이 : 10950번 A+B - 3 (0) | 2020.01.12 |
BAEKJOON 문제 풀이 : 15740번 A+B - 9
문제 : https://www.acmicpc.net/problem/15740
15740번: A+B - 9
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
덧셈 알고리즘입니다.
한 라인에 두 정수를 입력받고 두 정수의 덧셈 결과를 출력하는 문제입니다.
특이사항으로는 Java로 문제를 풀 때 BigInteger 패키지를 사용해야한다는 점을 들 수 있습니다.
문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] nums = br.readLine().split(" ", -1);
System.out.println(new BigInteger(nums[0]).add(new BigInteger(nums[1])));
br.close();
}
}
|
cs |
2. Python
1
2
3
4
|
if __name__ == '__main__':
num1, num2 = map(int, input().split(' ', -1))
print(num1 + num2)
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 2588번 곱셈 (0) | 2020.01.20 |
---|---|
BAEKJOON 문제 풀이 : 15792번 A/B - 2 (0) | 2020.01.19 |
BAEKJOON 문제 풀이 : 10951번 A+B - 4 (0) | 2020.01.15 |
BAEKJOON 문제 풀이 : 10950번 A+B - 3 (0) | 2020.01.12 |
BAEKJOON 문제 풀이 : 2558번 A+B - 2 (0) | 2020.01.12 |
BAEKJOON 문제 풀이 : 10951번 A+B - 4
문제 : https://www.acmicpc.net/problem/10951
10951번: A+B - 4
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
덧셈 알고리즘입니다.
해당 사이트에서는 입력 개수를 모르는 상황에서 어떤 로직을 사용해야하는지 알 수 있는 문제입니다.
문제 풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = null;
while ((str = br.readLine()) != null) {
String[] nums = str.split(" ", -1);
bw.write(Integer.parseInt(nums[0]) + Integer.parseInt(nums[1]) + "\n");
}
bw.close();
br.close();
}
}
|
cs |
2. Python3
1
2
3
4
5
6
|
import sys
if __name__ == '__main__':
for line in sys.stdin.readlines():
num1, num2 = map(int, line.split())
print(num1 + num2)
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 15792번 A/B - 2 (0) | 2020.01.19 |
---|---|
BAEKJOON 문제 풀이 : 15740번 A+B - 9 (0) | 2020.01.16 |
BAEKJOON 문제 풀이 : 10950번 A+B - 3 (0) | 2020.01.12 |
BAEKJOON 문제 풀이 : 2558번 A+B - 2 (0) | 2020.01.12 |
BAEKJOON 문제 풀이 : 1000번 A+B (0) | 2020.01.12 |
BAEKJOON 문제 풀이 : 10950번 A+B - 3
https://www.acmicpc.net/problem/10950
10950번: A+B - 3
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
덧셈 알고리즘입니다.
첫 번째 입력으로 루프 횟수를 입력받고, 주어진 횟수만큼 덧셈 및 출력을 반복합니다.
풀이는 아래와 같습니다.
1. Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); try { int cntLoop = Integer.parseInt(br.readLine()); for (int i = 0; i < cntLoop; i++) { String[] nums = br.readLine().split(" ", -1); String str = String.valueOf((Integer.parseInt(nums[0]) + Integer.parseInt(nums[1]))) + "\n"; bw.write(str); } br.close(); bw.close(); } catch (Exception e) { } } } | cs |
2. Python
1 2 3 4 5 | if __name__ == '__main__': cntLoop = int(input()) for i in range(0, cntLoop): num1, num2 = map(int, input().split()) print(num1 + num2) | cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 15792번 A/B - 2 (0) | 2020.01.19 |
---|---|
BAEKJOON 문제 풀이 : 15740번 A+B - 9 (0) | 2020.01.16 |
BAEKJOON 문제 풀이 : 10951번 A+B - 4 (0) | 2020.01.15 |
BAEKJOON 문제 풀이 : 2558번 A+B - 2 (0) | 2020.01.12 |
BAEKJOON 문제 풀이 : 1000번 A+B (0) | 2020.01.12 |
BAEKJOON 문제 풀이 : 2558번 A+B - 2
https://www.acmicpc.net/problem/2558
2558번: A+B - 2
첫째 줄에 A, 둘째 줄에 B가 주어진다. (0 < A, B < 10)
www.acmicpc.net
덧셈 알고리즘입니다.
각 라인마다 하나의 숫자형 값을 입력받아, 두 라인에서 입력 받은 값의 덧셈 결과를 출력하는 문제입니다.
문제 풀이는 아래와 같습니다.
1. Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num1 = sc.nextInt(); int num2 = sc.nextInt(); System.out.println(num1 + num2); sc.close(); } } | cs |
2. Python
1 2 3 4 5 | if __name__ == '__main__': num1 = int(input()) num2 = int(input()) print(num1 + num2) | cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 15792번 A/B - 2 (0) | 2020.01.19 |
---|---|
BAEKJOON 문제 풀이 : 15740번 A+B - 9 (0) | 2020.01.16 |
BAEKJOON 문제 풀이 : 10951번 A+B - 4 (0) | 2020.01.15 |
BAEKJOON 문제 풀이 : 10950번 A+B - 3 (0) | 2020.01.12 |
BAEKJOON 문제 풀이 : 1000번 A+B (0) | 2020.01.12 |
BAEKJOON 문제 풀이 : 1000번 A+B
https://www.acmicpc.net/problem/1000
1000번: A+B
문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 첫째 줄에 A+B를 출력한다. 예제 입력 1 복사 1 2 예제 출력 1 복사 3 힌트 여기를 누르면 1000번 예제 소스를 볼 수 있습니다....
www.acmicpc.net
덧셈 알고리즘입니다.
한 라인에서 두 개의 숫자형 값을 입력받아, 두 수의 덧셈 결과를 출력하는 문제입니다.
풀이는 아래와 같습니다.
1. Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int result = num1 + num2;
System.out.println(result);
sc.close();
}
}
|
cs |
2. Python3
1
2
3
4
|
if __name__ == '__main__':
num1, num2 = map(int, input().split())
print(num1 + num2)
|
cs |
'BAEKJOON' 카테고리의 다른 글
BAEKJOON 문제 풀이 : 15792번 A/B - 2 (0) | 2020.01.19 |
---|---|
BAEKJOON 문제 풀이 : 15740번 A+B - 9 (0) | 2020.01.16 |
BAEKJOON 문제 풀이 : 10951번 A+B - 4 (0) | 2020.01.15 |
BAEKJOON 문제 풀이 : 10950번 A+B - 3 (0) | 2020.01.12 |
BAEKJOON 문제 풀이 : 2558번 A+B - 2 (0) | 2020.01.12 |