//
728x90
반응형

BOJ 1264 모음의 개수

문제

영문 문장을 입력받아 모음의 개수를 세는 프로그램을 작성하시오. 

모음은 'a', 'e', 'i', 'o', 'u'이며 대문자 또는 소문자이다.

시간 제한 : 1 초
메모리 제한 : 128 MB

입력

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 

각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 

각 줄은 최대 255글자로 이루어져 있다.

입력의 끝에는 한 줄에 '#' 한 글자만이 주어진다.

출력

각 줄마다 모음의 개수를 세서 출력한다.

예제 입력 1

How are you today?
Quite well, thank you, how about yourself?
I live at number twenty four.
#

예제 출력 1

7
14
9

풀이

v = ['a','e','i','o','u']

while True:
    cnt = 0
    s = input().lower()
    if s == '#':
        break
    for i in(s):
        if i in v:
            cnt += 1
    print(cnt)
728x90
반응형
728x90
반응형

BOJ 11478 서로 다른 부분 문자열의 개수

문제

문자열 S가 주어졌을 때, S의 서로 다른 부분 문자열의 개수를 구하는 프로그램을 작성하시오.

부분 문자열은 S에서 연속된 일부분을 말하며, 길이가 1보다 크거나 같아야 한다.

예를 들어, ababc의 부분 문자열은 a, b, a, b, c, ab, ba, ab, bc, aba, bab, abc, abab, babc, ababc가 있고,

서로 다른것의 개수는 12개이다.

시간 제한 : 1 초
메모리 제한 : 512 MB

입력

첫째 줄에 문자열 S가 주어진다. 

S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다.

출력

첫째 줄에 S의 서로 다른 부분 문자열의 개수를 출력한다.

예제 입력 1

ababc

예제 출력 1

12

풀이

s = input()
res = set()

for i in range(len(s)):
    for j in range(i, len(s)):
        res.add(s[i:j+1])
        
print(len(res))
728x90
반응형
728x90
반응형

BOJ 10987 모음의 개수

문제

알파벳 소문자로만 이루어진 단어가 주어진다.

이때, 모음(a, e, i, o, u)의 개수를 출력하는 프로그램을 작성하시오.

시간 제한 : 1 초
메모리 제한 : 256 MB

입력

첫째 줄에 단어가 주어진다. 

단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

출력

첫째 줄에 모음의 개수를 출력한다.

예제 입력 1

baekjoon

예제 출력 1

4

풀이

s = input()
m = 'aeiou'
cnt = 0

for c in s:
    if c in m:
        cnt += 1

print(cnt)
728x90
반응형
728x90
반응형

BOJ 11365 !밀비 급일

문제

당신은 길을 가다가 이상한 쪽지를 발견했다. 

그 쪽지에는 암호가 적혀 있었는데, 똑똑한 당신은 암호가 뒤집으면 해독된다는 것을 발견했다.

이 암호를 해독하는 프로그램을 작성하시오.

시간 제한 : 1 초
메모리 제한 : 256 MB

입력

한 줄에 하나의 암호가 주어진다. 암호의 길이는 500을 넘지 않는다.

마지막 줄에는 "END"가 주어진다. (END는 해독하지 않는다.)

출력

각 암호가 해독된 것을 한 줄에 하나씩 출력한다.

예제 입력 1

!edoc doog a tahW
noitacitsufbo
erafraw enirambus detcirtsernu yraurbeF fo tsrif eht no nigeb ot dnetni eW
lla sees rodroM fo drol eht ,ssertrof sih nihtiw delaecnoC
END

예제 출력 1

What a good code!
obfustication
We intend to begin on the first of February unrestricted submarine warfare
Concealed within his fortress, the lord of Mordor sees all

풀이

import sys

input = sys.stdin.readline

while True:
    s = input().rstrip()
    if s == 'END':
        break
        
    print(s[::-1])
728x90
반응형
728x90
반응형

BOJ 2745 진법 변환

문제

B진법 수 N이 주어진다. 

이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 

이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

시간 제한 : 1 초
메모리 제한 : 128 MB

입력

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)

B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.

출력

첫째 줄에 B진법 수 N을 10진법으로 출력한다.

예제 입력 1

ZZZZZ 36

예제 출력 1

60466175

풀이

n, b = input().split()

print(int(n, int(b)))
728x90
반응형
728x90
반응형

BOJ 1357 뒤집힌 덧셈

문제

어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다.

Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 

예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev(X) = 1이다.

두 양의 정수 X와 Y가 주어졌을 때, Rev(Rev(X) + Rev(Y))를 구하는 프로그램을 작성하시오

시간 제한 : 2 초
메모리 제한 : 128 MB

입력

첫째 줄에 수 X와 Y가 주어진다. 

X와 Y는 1,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 문제의 정답을 출력한다.

예제 입력 1

123 100

예제 출력 1

223

예제 입력 2

111 111

예제 출력 2

222

예제 입력 3

5 5

예제 출력 3

1

예제 입력 4

1000 1

예제 출력 4

2

예제 입력 5

456 789

예제 출력 5

1461

풀이

x, y = map(str, input().split())
x = int(x[::-1]) 
y = int(y[::-1]) 
res = str(x + y)

print(int(res[::-1]))
728x90
반응형
728x90
반응형

BOJ 1159 농구 경기

문제

상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 

처음에 그는 농구 경기를 좋아하는 사람이었다. 

농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작했다.

상근이도 농구장을 청소하면서 감독이 되기 위해 가져야할 능력을 공부해나갔다.

서당개 3년이면 풍월을 읊듯이 상근이는 점점 감독으로 한 걸음 다가가고 있었다. 

어느 날 그에게 지방의 한 프로농구팀을 감독할 기회가 생기게 되었다. 

그는 엄청난 지도력을 보여주며 프로 리그에서 우승을 했고, 이제 국가대표팀의 감독이 되었다.

내일은 일본과 국가대표 친선 경기가 있는 날이다. 

상근이는 내일 경기에 나설 선발 명단을 작성해야 한다.

국가대표팀의 감독이 된 이후에 상근이는 매우 게을러졌다. 

그는 선수의 이름을 기억하지 못하고, 각 선수의 능력도 알지 못한다. 

따라서, 누가 선발인지 기억하기 쉽게 하기 위해 성의 첫 글자가 같은 선수 5명을 선발하려고 한다. 

만약, 성의 첫 글자가 같은 선수가 5명보다 적다면, 상근이는 내일 있을 친선 경기를 기권하려고 한다.

상근이는 내일 경기를 위해 뽑을 수 있는 성의 첫 글자를 모두 구해보려고 한다.

시간 제한 : 1 초
메모리 제한 : 128 MB

입력

첫째 줄에 선수의 수 N (1 ≤ N ≤ 150)이 주어진다. 

다음 N개 줄에는 각 선수의 성이 주어진다. (성은 알파벳 소문자로만 이루어져 있고, 최대 30글자이다)

출력

상근이가 선수 다섯 명을 선발할 수 없는 경우에는 "PREDAJA" (따옴표 없이)를 출력한다. 

PREDAJA는 크로아티아어로 항복을 의미한다. 

선발할 수 있는 경우에는 가능한 성의 첫 글자를 사전순으로 공백없이 모두 출력한다.

예제 입력 1

18
babic
keksic
boric
bukic
sarmic
balic
kruzic
hrenovkic
beslic
boksic
krafnic
pecivic
klavirkovic
kukumaric
sunkic
kolacic
kovacic
prijestolonasljednikovi

예제 출력 1

bk

예제 입력 2

6
michael
jordan
lebron
james
kobe
bryant

예제 출력 2

PREDAJA

풀이

n = int(input())
arr = []

for _ in range(n):
    f = input()
    arr.append(f[0])

first_name = set(arr)
res = []

for i in first_name:
    if arr.count(i) >= 5:
        res.append(i)

if len(res) > 0:
    print(''.join(sorted(res)))
else:
    print("PREDAJA")
728x90
반응형
728x90
반응형

BOJ 2754 학점계산

문제

어떤 사람의 C언어 성적이 주어졌을 때, 평점은 몇 점인지 출력하는 프로그램을 작성하시오.

A+: 4.3, A0: 4.0, A-: 3.7

B+: 3.3, B0: 3.0, B-: 2.7

C+: 2.3, C0: 2.0, C-: 1.7

D+: 1.3, D0: 1.0, D-: 0.7

F: 0.0

시간 제한 : 1 초
메모리 제한 : 128 MB

입력

첫째 줄에 C언어 성적이 주어진다. 

성적은 문제에서 설명한 13가지 중 하나이다.

출력

첫째 줄에 C언어 평점을 출력한다.

예제 입력 1

A0

예제 출력 1

4.0

풀이

socre = {'A+':'4.3', 'A0':'4.0', 'A-':'3.7',
       'B+':'3.3', 'B0':'3.0', 'B-':'2.7',
       'C+':'2.3', 'C0':'2.0', 'C-':'1.7',
       'D+':'1.3', 'D0':'1.0', 'D-':'0.7',
       'F':'0.0'}

record = input()
print(socre[record])
728x90
반응형

+ Recent posts