본문 바로가기

매일매일 (Everyday)

[BOJ] - 문자열 - (1) - Python

11654: 아스키코드

# 11654: 아스키 코드
x = input()
print(ord(x))

 

11720: 숫자의 합

# 11720: 숫자의 합
N = int(input())
X = str(input())
sum = 0
for i in range(N):
    sum += int(X[i])
print(sum)

 

10809: 알파벳 찾기

#10809: 알파벳 찾기, .index , .find 의 차이
S = str(input())
abc = 'abcdefghijklmnopqrstuvwxyz'
for i in range(len(abc)):
    print(S.find(abc[i]), end = ' ')

 

2675: 문자열 반복

# 2675: 문자열 반복
T = int(input())
result = ''
for _ in range(T):
    R, S = input().split()
    for i in S:
        result += int(R)* i
    print(result)

## 다시풀기
T = int(input())

for _ in range(T):
    R, S = input().split()
    result = ''
    for i in S:
        result += int(R)* i
    print(result)

 

1157: 단어 공부

# 1157: 단어 공부
a = str(input())
dic = {}
for i in abc :
    dic[i] = a.count(i)

if list(dic.values()).count(max(dic.values())) >= 2 :
    print('?')
else :
    print(max(dic, key = dic.get).upper())

'''시간초과 : 
Case 1. for문 안에 str()이 들어가면 루프를 돌릴때마다 계산해야되니 숫자로 변경하라고 함.
Case 2. count 함수가 O(N)의 시간이 든다. 문자열 처음부터 끝까지 돌리면 O(N^2)시간이 걸린다고 함.
단어의 길이가 1,000,000 미만이다.
'''
# 다시풀기, for문안에 count나 max 등의 메소드가 시간낭비가 있다는 것을 판단
a = str(input()).upper()
dic = {}
abc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for i in abc :
    dic[i] = a.count(i)

if list(dic.values()).count(max(dic.values())) >= 2 :
    print('?')
else :
    print(max(dic, key = dic.get).upper())
'''for문 안에 있는 range()의 길이를 26으로 축소, set(a)으로 해도 중복제거니까 축소가 됨'''

 

1152: 단어의 개수

# 1152: 단어의 개수
s = str(input())
print(int(s.count(' '))+1)

## 공백 연속 (X), 문자열은 공백으로 시작하거나 끝날 수 있다. 따라서 위 답이 틀린 답
## or → a and b, a and ~ b, ~a and b 로 풀어서 접근
s = str(input())
if s[0] == ' ' and s[len(s)-1] == ' ':
    print(int(s.count(' '))-1)
elif s[0] == ' ' and s[len(s)-1] != ' ':
    print(int(s.count(' ')))
elif s[0] != ' ' and s[len(s)-1] == ' ':
    print(int(s.count(' ')))
else :
    print(int(s.count(' '))+1)

### 아니 이렇게 쉬운답이?..
print(len(input().split()))

 

2908: 상수

# 2908: 상수
A, B = map(str, input().split())
A = int(A[::-1])
B = int(B[::-1])
if A < B :
    print(B)
else :
    print(A)

## 대부분
print(max(input()[::-1].split())) # 큰값을 max() 로 처리했네요.

 

5622: 다이얼

# 5622: 다이얼
dic = {2:'ABC', 3:'DEF', 4:'GHI', 5:'JKL', 6:'MNO', 7:'PQRS', 8:'TUV', 9:'WXYZ'}
num_list = [2, 3, 4, 5, 6, 7, 8, 9]
s = str(input())

time = 0

for a in s :
    for i in num_list :
       if a in dic[i] :
           time += 1+i # 1번은 2초가 걸리므로 1씩 더해준다.

print(time)