728x90

BOJ 10821 정수의 개수

문제

숫자와 콤마로만 이루어진 문자열 S가 주어진다. 

이때, S에 포함되어있는 정수의 개수를 구하는 프로그램을 작성하시오.

S의 첫 문자와 마지막 문자는 항상 숫자이고, 콤마는 연속해서 주어지지 않는다. 

또, 0으로 시작하는 정수는 주어지지 않는다.

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

입력

첫째 줄에 문자열 S가 주어진다. S의 길이는 최대 100이다.

출력

문자열 S에 포함되어 있는 정수의 개수를 출력한다.

예제 입력 1

10,20,30,50,100

예제 출력 1

5

풀이

n = list(map(int, input().split(',')))

print(len(n))
728x90
728x90

BOJ 1919 에너그램 만들기

문제

두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때, 그러한 두 단어를 서로 애너그램 관계에 있다고 한다. 

예를 들면 occurs 라는 영어 단어와 succor 는 서로 애너그램 관계에 있는데, occurs의 각 문자들의 순서를 잘 바꾸면 succor이 되기 때문이다.

한 편, dared와 bread는 서로 애너그램 관계에 있지 않다. 

하지만 dared에서 맨 앞의 d를 제거하고, bread에서 제일 앞의 b를 제거하면, ared와 read라는 서로 애너그램 관계에 있는 단어가 남게 된다.

두 개의 영어 단어가 주어졌을 때, 두 단어가 서로 애너그램 관계에 있도록 만들기 위해서 제거해야 하는 최소 개수의 문자 수를 구하는 프로그램을 작성하시오. 

문자를 제거할 때에는 아무 위치에 있는 문자든지 제거할 수 있다.

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

입력

첫째 줄과 둘째 줄에 영어 단어가 소문자로 주어진다. 

각각의 길이는 1,000자를 넘지 않으며, 적어도 한 글자로 이루어진 단어가 주어진다.

출력

첫째 줄에 답을 출력한다.

예제 입력 1

aabbcc
xxyybb

예제 출력 1

8

풀이

a = input()
b = input()
res = 0

for i in range(97, 123):
    res += abs(a.count(chr(i)) - b.count(chr(i)))
    
print(res)
728x90
728x90

BOJ 2789 유학 금지

문제

아주 멀리 떨어져 있는 작은 나라가 있다. 

이 나라에서 가장 공부를 잘하는 학생들은 모두 다른 나라로 유학을 간다. 

정부는 최고의 학생들이 자꾸 유학을 가는 이유를 찾으려고 했다. 

하지만, 학생들의 이유가 모두 달랐기 때문에 정확한 이유를 찾을 수 없었다.

정부의 고위직은 뛰어난 학생들이 자꾸 유학을 가는 현상을 매우 불쾌해 했다.

가장 많은 학생들이 유학을 가는 대학교는 영국의 캠브리지 대학교이다. 

정부는 인터넷 검열을 통해서 해외로 나가는 이메일의 내용 중 일부를 삭제하기로 했다. 

이메일의 각 단어 중에서 CAMBRIDGE에 포함된 알파벳은 모두 지우기로 했다. 

즉, 어떤 이메일에 LOVA란 단어가 있다면, A는 CAMBRIDGE에 포함된 알파벳이기 때문에, 받아보는 사람은 LOV로 받는다.

이렇게, 어떤 단어가 주어졌을 때, 검열을 거친 후에는 어떤 단어가 되는지 구하는 프로그램을 작성하시오.

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

입력

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 

이 단어는 적어도 3글자이며, 많아야 100글자이다.

출력

입력으로 주어진 단어를 정부가 검열을 하면 어떻게 변하는지를 출력한다. 

즉, 단어에서 CAMBRIDGE에 포함된 알파벳을 모두 지운 뒤 출력한다. 

항상 정답의 길이는 0보다 크다.

예제 입력 1

LOVA

예제 출력 1

LOV

예제 입력 2

KARIJERA

예제 출력 2

KJ

풀이

a = "CAMBRIDGE"
s = list(input())

for i in a:
    for j in range(len(s)):
        if i == s[j]:
            s[j] = ''
            
for i in s:
    print(i, end='')
728x90
728x90

BOJ 10102 개표

문제

A와 B가 한 오디션 프로의 결승전에 진출했다. 

결승전의 승자는 심사위원의 투표로 결정된다.

심사위원의 투표 결과가 주어졌을 때, 어떤 사람이 우승하는지 구하는 프로그램을 작성하시오.

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

입력

입력은 총 두 줄로 이루어져 있다. 

첫째 줄에는 심사위원의 수 V (1 ≤  V ≤  15)가 주어지고, 둘째 줄에는 각 심사위원이 누구에게 투표했는지가 주어진다.

A와 B는 각각 그 참가자를 나타낸다.

출력

A가 받은 표가 B보다 많은 경우에는 A

B가 받은 표가 A보다 많은 경우에는 B

같은 경우에는 Tie

예제 입력 1

6
ABBABB

예제 출력 1

B

풀이

n=int(input())
v = input()
a = b = 0

for i in range(n):
    if v[i] =='A':
        a += 1
    else:
        b += 1
if a==b:
    print('Tie')
elif a>b:
    print('A')
else:
    print('B')
728x90
728x90

BOJ 5598 카이사르 암호

문제

가이우스 율리우스 카이사르(Gaius Julius Caesar)는 고대 로마 군인이자 정치가였다. 

카이사르는 비밀스럽게 편지를 쓸 때, 'A'를 'D로', 'B'를 'E'로, 'C'를 'F'로... 이런 식으로 알파벳 문자를 3개씩 건너뛰어 적었다고 한다.

26개의 대문자 알파벳으로 이루어진 단어를 카이사르 암호 형식으로 3문자를 옮겨 겹치지 않게 나열하여 얻은 카이사르 단어가 있다. 

이 카이사르 단어를 원래 단어로 돌려놓는 프로그램을 작성하시오.

각 문자별로 변환 전과 변환 후를 나타낸 건 아래와 같다.

변환전    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
변환후    D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

예를 들어서, 이 방법대로 단어 'JOI'를 카이사르 단어 형식으로 변환한다면 'MRL'을 얻을 수 있고,

앞의 예와 같은 방법으로 얻은 카이사르 단어 'FURDWLD'를 원래 단어로 고치면 'CROATIA'가 된다.

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

입력

입력은 한 줄로 이루어져 있으며, 그 한 줄에는 대문자 알파벳으로 구성된 단어가 1개 있다. 

단어는 최대 1000자 이하이다.

출력

입력받은 카이사르 단어를 원래 단어로 고친 걸 출력하시면 된다.

예제 입력 1

MRL

예제 출력 1

JOI

예제 입력 2

FURDWLD

예제 출력 2

CROATIA

풀이

s = input()
res = ''

for i in s:
  word = ord(i) - 3

  if word < 65:
    word += 26
    res += chr(word)
  else:
    res += chr(word)

print(res)
728x90
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

+ Recent posts