728x90

BOJ 11721 열 개씩 끊어 출력하기

문제

알파벳 소문자와 대문자로만 이루어진 길이가 N인 단어가 주어진다.

한 줄에 10글자씩 끊어서 출력하는 프로그램을 작성하시오.

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

입력

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

단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 

길이가 0인 단어는 주어지지 않는다.

출력

입력으로 주어진 단어를 열 개씩 끊어서 한 줄에 하나씩 출력한다. 

단어의 길이가 10의 배수가 아닌 경우에는 마지막 줄에는 10개 미만의 글자만 출력할 수도 있다.

예제 입력 1

BaekjoonOnlineJudge

예제 출력 1

BaekjoonOn
lineJudge

예제 입력 2

OneTwoThreeFourFiveSixSevenEightNineTen

예제 출력 2

OneTwoThre
eFourFiveS
ixSevenEig
htNineTen

풀이

n = input()

for i in range(0, len(n), 10):
    print(n[i:i+10])
728x90
728x90

BOJ 11718 그대로 출력하기

문제

입력 받은 대로 출력하는 프로그램을 작성하시오.

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

입력

입력이 주어진다. 

입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다.

각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 

또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.

출력

입력받은 그대로 출력한다.

예제 입력 1

Hello
Baekjoon
Online Judge

예제 출력 1

Hello
Baekjoon
Online Judge

풀이

while True:
    try:
        print(input())
    except EOFError:
        exit()
728x90
728x90

BOJ 2941 크로아티아 알파벳

문제

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다.

따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳 변경
č c=
ć c-
dz=
đ d-
lj lj
nj nj
š s=
ž z=
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 

단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. 

lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

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

입력

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.

단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.

출력

입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

예제 입력 1

ljes=njak

예제 출력 1

6

예제 입력 2

ddz=z=

예제 출력 2

3

예제 입력 3

nljj

예제 출력 3

3

예제 입력 4

c=c=

예제 출력 4

2

예제 입력 5

dz=ak

예제 출력 5

3

풀이

s = input()
alph=['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']

for i in alph:
    s = s.replace(i, '*')
    
print(len(s))
728x90
728x90

BOJ 1316 그룹 단어 체커

문제

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 

예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, 

kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, 

aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.

단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.

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

입력

첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 

둘째 줄부터 N개의 줄에 단어가 들어온다.

단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다.

출력

첫째 줄에 그룹 단어의 개수를 출력한다.

예제 입력 1 

3
happy
new
year

예제 출력 1

3

예제 입력 2

4
aba
abab
abcabc
a

예제 출력 2

1

예제 입력 3

5
ab
aa
aca
ba
bb

예제 출력 3

4

예제 입력 4

2
yzyzy
zyzyz

예제 출력 4

0

예제 입력 5

1
z

예제 출력 5

1

풀이

n = int(input())
cnt = n

for i in range(n):
    word = input()
    for j in range(len(word)-1):
        if word[j] == word[j+1]:
            pass
        elif word[j] in word[j+1:]:
            cnt -= 1
            break

print(cnt)
728x90
728x90

BOJ 1157 단어 공부

문제

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 

단, 대문자와 소문자를 구분하지 않는다.

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

입력

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

주어지는 단어의 길이는 1,000,000을 넘지 않는다.

출력

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다.

단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

예제 입력 1 

Mississipi

예제 출력 1

?

예제 입력 2

zZa

예제 출력 2

Z

예제 입력 3

z

예제 출력 3

Z

예제 입력 4

baaa

예제 출력 4

A

풀이

word = input().upper()
word_num = list(set(word))
cnt = []

for i in word_num:
     count = word.count(i)
     cnt.append(count)

if cnt.count(max(cnt)) > 1:
     print('?')
else:
     print(word_num[(cnt.index(max(cnt)))])
728x90
728x90

BOJ 2675 문자열 반복

문제

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 

즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. 

S에는 QR Code "alphanumeric" 문자만 들어있다.

QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다.

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

입력

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다.

각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. 

S의 길이는 적어도 1이며, 20글자를 넘지 않는다.

출력

각 테스트 케이스에 대해 P를 출력한다.

예제 입력 1

2
3 ABC
5 /HTP

예제 출력 1

AAABBBCCC
/////HHHHHTTTTTPPPPP

풀이

t = int(input())

for _ in range(t):
    r, s = input().split()
    res = ''
    for i in s:
        res += int(r) * i
    print(res)
728x90
728x90

BOJ 1152 단어의 개수

문제

영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 

이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오.

단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.

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

입력

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 

이 문자열의 길이는 1,000,000을 넘지 않는다.

단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 

또한 문자열은 공백으로 시작하거나 끝날 수 있다.

출력

첫째 줄에 단어의 개수를 출력한다.

예제 입력 1

The Curious Case of Benjamin Button

예제 출력 1

6

예제 입력 2

 The first character is a blank

예제 출력 2

6

예제 입력 3

The last character is a blank

예제 출력 3

6

풀이

a = input().split()

print(len(a))
728x90
728x90

BOJ 10809 알파벳 찾기

문제

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

각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

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

입력

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

단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.

출력

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.

만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 

단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.

예제 입력 1

baekjoon

예제 출력 1

1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

풀이

s = input()
alphabet = list(range(97, 123))

for i in alphabet:
    print(s.find(chr(i)), end=' ')
728x90

+ Recent posts