1152 단어의 개수
문제
영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.
입력
첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다.
출력
첫째 줄에 단어의 개수를 출력한다.
a = input().split()
print(len(a))
2908 상수
문제
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.
상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.
두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.
출력
첫째 줄에 상수의 대답을 출력한다.
a, b = input().split()
newa = []
newb = []
for i in range(2, -1, -1):
newa.append(a[i])
newb.append(b[i])
if int(''.join(newa)) > int(''.join(newb)):
print(int(''.join(newa)))
elif int(''.join(newa)) < int(''.join(newb)):
print(int(''.join(newb)))
5662 다이얼
문제
상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.
전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.
숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.
상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.
할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 시간을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다.
출력
첫째 줄에 다이얼을 걸기 위해서 필요한 시간을 출력한다.
lis = [['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']]
a = input()
la = []
for i in range(len(a)):
for j in range(len(lis)):
if a[i] in lis[j]:
la.append(j+2)
sum = len(la)
for i in range(len(la)):
sum += la[i]
print(sum)
2941 크로아티아 알파벳
문제
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳변경
č | c= |
ć | c- |
dž | dz= |
đ | d- |
lj | lj |
nj | nj |
š | s= |
ž | z= |
예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
입력
첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.
단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.
출력
입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
b = input()
a = []
for i in range(len(b)):
a.append(b[i])
for i in range(0, len(a)-1):
if a[i] == 'c':
if a[i+1] == '=' or a[i+1] == '-':
a[i] ='1'
elif a[i] == 's':
if a[i+1] == '=':
a[i] = '1'
elif a[i] == 'z':
if a[i+1] == '=':
a[i] = '1'
elif a[i] == 'l':
if a[i+1] == 'j':
a[i] = '1'
elif a[i] == 'n':
if a[i+1] == 'j':
a[i] = '1'
elif a[i] == 'd':
if a[i+1] == '-':
a[i] = '1'
if i < len(a)-2:
if a[i] == 'd':
if a[i + 1] == 'z':
if a[i + 2] == '=':
a[i] = '1'
a[i+1] = '1'
sum = len(a)
for i in range(len(a)):
if a[i] == '1':
sum -= 1
# print(a)
print(sum)
음 엄청 어렵게 풀었다...... 다른 쉬운 코드 공유
a=input()
print(len(a)-a.count("=")-a.count("dz=")-a.count("-")-a.count("lj")-a.count("nj"))
count를 아직 잘 사용 못하는데 사용하는데 익숙해지자!
'알고리즘 > 백준' 카테고리의 다른 글
[백준]greedy_11399 ATM (0) | 2020.08.19 |
---|---|
[백준]greedy_11047 동전0 (0) | 2020.08.18 |
백준 8958, 4344, 1546 (0) | 2020.08.16 |
0814 백준 1712, 2839 (0) | 2020.08.14 |
0812 백준 알고리즘 11720, 10809, 2675, 1157 풀이 (0) | 2020.08.12 |