//
728x90
반응형

BOJ 4458 첫 글자를 대문자로

문제

문장을 읽은 뒤, 줄의 첫 글자를 대문자로 바꾸는 프로그램을 작성하시오.

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

입력

첫째 줄에 줄의 수 N이 주어진다. 

다음 N개의 줄에는 문장이 주어진다. 

각 문장에 들어있는 글자의 수는 30을 넘지 않는다.

모든 줄의 첫 번째 글자는 알파벳이다.

출력

각 줄의 첫글자를 대문자로 바꾼뒤 출력한다.

예제 입력 1

5
powdered Toast Man
skeletor
Electra Woman and Dyna Girl
she-Ra Princess of Power
darth Vader

예제 출력 1

Powdered Toast Man
Skeletor
Electra Woman and Dyna Girl
She-Ra Princess of Power
Darth Vader

풀이

n = int(input())

for _ in range(n):
    s = list(input())
    s[0] = s[0].upper()
    print(''.join(s))

 

728x90
반응형
728x90
반응형

BOJ 1225 이상한 곱셈

문제

A×B를 계산하다 지겨워진 형택이는 A×B를 새로운 방법으로 정의하려고 한다.

A에서 한 자리를 뽑고 × B에서 임의로 한 자리를 뽑아 곱한다.

의 가능한 모든 조합 (A가 n자리, B가 m자리 수라면 총 가능한 조합은 n×m개)을 더한 수로 정의하려고 한다.

예를 들어 121×34는

1×3 + 1×4 + 2×3 + 2×4 + 1×3 + 1×4 = 28

이 된다. 이러한 형택이의 곱셈 결과를 구하는 프로그램을 작성하시오.

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

입력

첫째 줄에 A와 B가 주어진다. 

주어지는 두 수는 모두 10,000자리를 넘지 않는 음이 아닌 정수이다. 

수가 0인 경우에는 0만 주어지며, 그 외의 경우 수는 0으로 시작하지 않는다.

출력

첫째 줄에 형택이의 곱셈 결과를 출력한다.

예제 입력 1

123 45

예제 출력 1

54

풀이

import sys

input = sys.stdin.readline
a, b = map(list, input().split())
a = list(map(int, a))
b = list(map(int, b))

print(sum(a) * sum(b))
728x90
반응형
728x90
반응형

BOJ 5988 홀수일까 짝수일까

문제

짝이 없는 경재는 매일 홀로 있다보니 홀수를 판별할 수 있는 능력이 생겼다. 

창식이는 경재의 말이 사실인지 그 능력을 시험해보려 한다. 

창식이의 의심이 끝이 없을 것 같아 N개만 확인하기로 정했다.

N개의 정수가 주어지면 홀수인지 짝수인지를 출력하는 프로그램을 만들어 경재의 능력을 검증할 수 있게 도와주자.

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

입력

첫 번째 줄에 숫자의 개수 N(1 <= N <= 100)이 주어진다.

두 번째 줄부터 N+1번째 줄에 걸쳐 홀수인지 짝수인지 확인할 정수 K (1 <= K <= 10^60)가 주어진다.

출력

N개의 줄에 걸쳐 한 줄씩 정수 K가 홀수라면 'odd'를, 짝수라면 'even'을 출력한다.

예제 입력 1

2
1024
5931

예제 출력 1

even
odd

힌트

1024는 2로 나누어지므로 짝수이고, 5931은 그렇지 않으므로 홀수이다.

풀이

import sys

input=sys.stdin.readline
n = int(input())

for _ in range(n) :
    tmp = int(input())

    if tmp % 2 == 0 : 
        print("even")
    else : 
        print("odd")
728x90
반응형
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
반응형

+ Recent posts