[SWEA] 최빈수 구하기

출처: [SWEA] 최빈수 구하기


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys

input = sys.stdin.readline

T = int(input())

for _ in range(T):
test_case = int(input())
score_list = list(map(int, input().split()))
score_list.sort(reverse=True)
students = {}
for i in range(101):
students[i] = 0
for score in score_list:
students[score] += 1
max_value = max(students.values())
result=0
for key, value in students.items():
if value == max_value:
result = key
print("#{0} {1}".format(test_case, result))
# print(max(students.values()))
[백준] 21567번 숫자의 개수2

[백준] 21567번 숫자의 개수2

출처: [백준] 21567번 숫자의 개수2


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 (추가 시간 없음) 128 MB 8 8 8 100.000%

문제

세 개의 자연수 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번 쓰였다.


입력

첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오른쪽 위 꼭짓점의 x, y좌표값이 빈칸을 사이에 두고 차례로 주어진다. 모눈종이의 왼쪽 아래 꼭짓점의 좌표는 (0,0)이고, 오른쪽 위 꼭짓점의 좌표는(N,M)이다. 입력되는 K개의 직사각형들이 모눈종이 전체를 채우는 경우는 없다.


출력

첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.


예제 입력 1

1
2
3
150
266
427

예제 출력 1

1
2
3
4
5
6
7
8
9
10
3
1
0
2
0
0
0
2
0
0

예제 입력 2

1
2
3
1
1
1

예제 출력 2

1
2
3
4
5
6
7
8
9
10
0
1
0
0
0
0
0
0
0
0

예제 입력 3

1
2
3
999999
999999
999999

예제 출력 3

1
2
3
4
5
6
7
8
9
10
5
0
1
0
0
0
0
1
0
11

출처


알고리즘 분류


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys

input = sys.stdin.readline

A = int(input())
B = int(input())
C = int(input())
product_value = A * B * C

split_num = list(str(product_value).rstrip())

num_dict = {}

for i in range(10):
num_dict[i] = 0

for num in split_num:
num_dict[int(num)] += 1

for i in range(10):
print(num_dict[i])

[백준] 2455번 지능형 기차

[백준] 2455번 지능형 기차

출처: [백준] 2455번 지능형 기차


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 16669 12017 10733 76.730%

문제

최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. 이 장치를 이용하여 출발역에서 종착역까지 가는 도중 기차 안에 사람이 가장 많을 때의 사람 수를 계산하려고 한다. 단, 이 기차를 이용하는 사람들은 질서 의식이 투철하여, 역에서 기차에 탈 때, 내릴 사람이 모두 내린 후에 기차에 탄다고 가정한다.

img

내린 사람 수 탄 사람 수
1번역(출발역) 0 32
2번역 3 13
3번역 28 25
4번역(종착역) 39 0

예를 들어, 위와 같은 경우를 살펴보자. 이 경우, 기차 안에 사람이 가장 많은 때는 2번역에서 3명의 사람이 기차에서 내리고, 13명의 사람이 기차에 탔을 때로, 총 42명의 사람이 기차 안에 있다.

이 기차는 다음 조건을 만족하면서 운행된다고 가정한다.

  1. 기차는 역 번호 순서대로 운행한다.
  2. 출발역에서 내린 사람 수와 종착역에서 탄 사람 수는 0이다.
  3. 각 역에서 현재 기차에 있는 사람보다 더 많은 사람이 내리는 경우는 없다.
  4. 기차의 정원은 최대 10,000명이고, 정원을 초과하여 타는 경우는 없다.

4개의 역에 대해 기차에서 내린 사람 수와 탄 사람 수가 주어졌을 때, 기차에 사람이 가장 많을 때의 사람 수를 계산하는 프로그램을 작성하시오.


입력

각 역에서 내린 사람 수와 탄 사람 수가 빈칸을 사이에 두고 첫째 줄부터 넷째 줄까지 역 순서대로 한 줄에 하나씩 주어진다.


출력

첫째 줄에 최대 사람 수를 출력한다.


예제 입력 1

1
2
3
4
0 32
3 13
28 25
39 0

예제 출력 1

1
42

힌트


출처

Olympiad > 한국정보올림피아드 > 한국정보올림피아드시․도지역본선 > 지역본선 2011 > 초등부 1번


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys

input = sys.stdin.readline

max_p = 0
sum_p = 0
for _ in range(4):
out_p, in_p = map(int, input().split())
sum_p -= out_p
sum_p += in_p
max_p = max(max_p, sum_p)

print(max_p)

[백준] 2490번 윷놀이

[백준] 2490번 윷놀이

출처: [백준] 2490번 윷놀이


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 21283 12299 10934 58.194%

문제

우리나라 고유의 윷놀이는 네 개의 윷짝을 던져서 배(0)와 등(1)이 나오는 숫자를 세어 도, 개, 걸, 윷, 모를 결정한다. 네 개 윷짝을 던져서 나온 각 윷짝의 배 혹은 등 정보가 주어질 때 도(배 한 개, 등 세 개), 개(배 두 개, 등 두 개), 걸(배 세 개, 등 한 개), 윷(배 네 개), 모(등 네 개) 중 어떤 것인지를 결정하는 프로그램을 작성하라.


입력

첫째 줄부터 셋째 줄까지 각 줄에 각각 한 번 던진 윷짝들의 상태를 나타내는 네 개의 정수(0 또는 1)가 빈칸을 사이에 두고 주어진다.


출력

첫째 줄부터 셋째 줄까지 한 줄에 하나씩 결과를 도는 A, 개는 B, 걸은 C, 윷은 D, 모는 E로 출력한다.


예제 입력 1

1
2
3
0 1 0 1
1 1 1 0
0 0 1 1

예제 출력 1

1
2
3
B
A
B

힌트


출처

Olympiad > 한국정보올림피아드 > 한국정보올림피아드시․도지역본선 > 지역본선 2009 > 초등부 1번

  • 잘못된 데이터를 찾은 사람: djm03178
  • 문제의 오타를 찾은 사람: eric00513

알고리즘 분류


시간 제한


풀이


소스코드 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import sys

input = sys.stdin.readline

for _ in range(3):
lists = list(map(int, input().split()))

if lists.count(1) == 0:
print('D')
elif lists.count(1) == 1:
print('C')
elif lists.count(1) == 2:
print('B')
elif lists.count(1) == 3:
print('A')
elif lists.count(1) == 4:
print('E')

소스코드 2

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
import sys

input = sys.stdin.readline

# 0: 배
# 1: 등

# 도(0,111), 개(00,11), 걸(000,1), 윷(0000), 모(1111)

for _ in range(3):
lists = list(map(int, input().split()))

front = 0 # 배
rear = 0 # 등

for num in lists:
if num == 0:
front += 1
else:
rear += 1

if rear == 0 and front == 4:
print('D')
elif rear == 1 and front == 3:
print('C')
elif rear == 2 and front == 2:
print('B')
elif rear == 3 and front == 1:
print('A')
elif rear == 4 and front == 0:
print('E')

[백준] 1476번 날짜 계산

[백준] 1476번 날짜 계산

출처: [백준] 1476번 날짜 계산


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 4 MB 19918 13053 10539 67.295%

문제

준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다.

지구를 나타내는 수를 E, 태양을 나타내는 수를 S, 달을 나타내는 수를 M이라고 했을 때, 이 세 수는 서로 다른 범위를 가진다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19)

우리가 알고있는 1년은 준규가 살고있는 나라에서는 1 1 1로 나타낼 수 있다. 1년이 지날 때마다, 세 수는 모두 1씩 증가한다. 만약, 어떤 수가 범위를 넘어가는 경우에는 1이 된다.

예를 들어, 15년은 15 15 15로 나타낼 수 있다. 하지만, 1년이 지나서 16년이 되면 16 16 16이 아니라 1 16 16이 된다. 이유는 1 ≤ E ≤ 15 라서 범위를 넘어가기 때문이다.

E, S, M이 주어졌고, 1년이 준규가 사는 나라에서 1 1 1일때, 준규가 사는 나라에서 E S M이 우리가 알고 있는 연도로 몇 년인지 구하는 프로그램을 작성하시오.


입력

첫째 줄에 세 수 E, S, M이 주어진다. 문제에 나와있는 범위를 지키는 입력만 주어진다.


출력

첫째 줄에 E S M으로 표시되는 가장 빠른 연도를 출력한다. 1 1 1은 항상 1이기 때문에, 정답이 음수가 나오는 경우는 없다.


예제 입력 1

1
1 16 16

예제 출력 1

1
16

예제 입력 2

1
1 1 1

예제 출력 2

1
1

예제 입력 3

1
1 2 3

예제 출력 3

1
5266

예제 입력 4

1
15 28 19

예제 출력 4

1
7980

힌트


출처


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys

input = sys.stdin.readline

E, S, M = map(int, input().split())

year = 1

while True:
if (year - E) % 15 == 0 and (year - S) % 28 == 0 and (year - M) % 19 == 0:
print(year)
break
year += 1

[백준] 2475번 검증수

[백준] 2475번 검증수

출처: [백준] 2475번 검증수


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 17465 13196 11861 76.900%

문제

컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다.

예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81 을 10으로 나눈 나머지인 1이 검증수이다.


입력

첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다.


출력

첫째 줄에 검증수를 출력한다.


예제 입력 1

1
0 4 2 5 6

예제 출력 1

1
1

힌트


출처

Olympiad > 한국정보올림피아드 > 한국정보올림피아드시․도지역본선 > 지역본선 2010 > 초등부 1번


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
import sys

input = sys.stdin.readline

lists = list(map(int, input().split()))

result = 0
for num in lists:
result += num ** 2

print(result % 10)

[백준] 10991번 별 찍기 - 16

[백준] 10991번 별 찍기 - 16

출처: [백준] 10991번 별 찍기 - 16


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 256 MB 9810 7659 7074 79.181%

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.


예제 입력 1

1
1

예제 출력 1

1
*

예제 입력 2

1
2

예제 출력 2

1
2
 *
* *

예제 입력 3

1
3

예제 출력 3

1
2
3
  *
* *
* * *

예제 입력 4

1
4

예제 출력 4

1
2
3
4
   *
* *
* * *
* * * *

힌트


출처


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
import sys

input = sys.stdin.readline

N = int(input())

for i in range(1, N + 1):
print(' ' * (N - i), end='')
for j in range(i):
print('*', end=' ')
print()

[백준] 2523번 별 찍기 - 13

[백준] 2523번 별 찍기 - 13

출처: [백준] 2523번 별 찍기 - 13


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 21128 14779 13815 71.252%

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.


예제 입력 1

1
3

예제 출력 1

1
2
3
4
5
*
**
***
**
*

힌트


출처


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
10
11
import sys

input = sys.stdin.readline

N = int(input())

for i in range(1, N + 1):
print('*' * i)
for i in reversed(range(1, N)):
print('*' * i)

[백준] 2522번 별 찍기 - 12

[백준] 2522번 별 찍기 - 12

출처: [백준] 2522번 별 찍기 - 12


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 11072 9348 8753 85.479%

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.


예제 입력 1

1
3

예제 출력 1

1
2
3
4
5
  *
**
***
**
*

힌트


출처


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
10
11
import sys

input = sys.stdin.readline

N = int(input())

for i in range(1, N + 1):
print(' ' * (N - i) + '*' * i)
for i in reversed(range(1, N)):
print(' ' * (N - i) + '*' * i)

[백준] 2446번 별 찍기 - 9

[백준] 2446번 별 찍기 - 9

출처: [백준] 2446번 별 찍기 - 9


시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 33081 18703 17182 57.652%

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.


입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.


출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.


예제 입력 1

1
5

예제 출력 1

1
2
3
4
5
6
7
8
9
*********
*******
*****
***
*
***
*****
*******
*********

힌트


출처


알고리즘 분류


시간 제한


풀이


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
import sys

input = sys.stdin.readline

N = int(input())

for i in reversed(range(1, N + 1)):
print(' ' * (N - i) + "*" * (2 * i - 1))

for i in range(2, N + 1):
print(' ' * (N - i) + "*" * (2 * i - 1))