백준 단계별로 풀어보기7 -문자열

 

replace

 

 


11654. 아스키 코드

n=input()
ascii = ord(n) #아스키 -> 문자
print(ascii)

chr = chr(ascii) #문자 -> 아스키

11720. 숫자의 합

n = int(input())
L = list(map(int,str(input())))
print(sum(L))

10809. 알파벳 찾기

#1. for문과 if문 사용

string = str(input())
alp = list(range(97,123)) #아스키
for a in alp: #각 abc..에 대해
    for i in range(len(string)):
        if chr(a) == S[i]:
            break
        else:
            i = -1
    print(i, end =' ')
    
string = list(map(str, input()))
for i in range (97,123):
    for j in range(0, len(string)):
        a = -1
        if chr(i) == n[j]:
            a = j
            break
    print(a, end=' ')

#2. in 사용

string = input()
alp ='abcdefghijklmnopqrstuvwxyz'
for i in alp:
    if i in string:
        print(string.index(i), end= ' ')
    else:
        print( -1, end =' ')

#3. find()사용

string = input()
alp= list(range(97,123))
for i in alp:
    print(string.find(chr(i))) 
    
string = input()
alp = "abcdefghijklmnopqrstuvwxyz" #아스키 대신 문자 입력
for i in alp:
    print(string.find(i), end = ' ')

2675. 문자열 반복

T = int(input())
for t in range(T):
    N, S = map(str,input().split())
    for s in S:
        print(str(s)*int(N),end='')
    print('\n',end='')

오랜만에 한번에 맞았는데, 역시 공부든 뭐든 맞아야 할맛이 난다...

 

1157. 단어 공부

S = input()
SU = S.upper() #대문자화
SU_list = list(SU) #대문자로 리스트 생성 

SU_set = set(SU)
SS_list = list(SU_set) #원소 중복제거한 리스트 만들어서

cnt_list = []
for ss in SS_list: 
    cnt = SU_list.count(ss) #각 원소에 대해 개수 세고
    cnt_list.append(cnt) #리스트에 추가한다음

max_cnt = max(cnt_list) #그중 최댓값 찾아서
max_index = cnt_list.index(max_cnt) #인덱스로 문자 반환

if cnt_list.count(max_cnt) == 1: #최댓값이 하나라면
    print(SS_list[max_index]) #문자 프린트
    
else: #하나가 아니라면
    print('?') #물음표 프린트

인데... 맞긴 했지만 오래걸린다

#check, get 사용

S = input().upper()
max_cnt = 0
check = {}
answer = ''
 
for i in S:
    cnt = check.get(i, 0) + 1
    check[i] = cnt
    if max_cnt < cnt:
        max_cnt = cnt
        answer = i
    elif max_cnt == cnt:
        answer = '?'
print(answer)

 

1152. 단어의 개수

S = list(input().split())
print(len(S))

2908. 상수

A, B = map(str,input().split())

A_ = list(A)
B_ = list(B)

A_new = int(A_[2]+A_[1]+A_[0])
B_new = int(B_[2]+B_[1]+B_[0])

print(max(A_new,B_new))

5622. 다이얼

S = list(input())
dic = {'A':2, 'B':2, 'C':2, 'D':3, 'E':3, 'F':3, 'G':4, 'H':4, 'I':4, 'J':5, 'K':5, 'L':5, 'M':6, 'N':6, 'O':6, 'P':7, 'Q':7, 'R':7, 'S':7, 'T':8, 'U':8, 'V':8, 'W':9, 'X':9, 'Y':9, 'Z':9}
ans = 0
for i in S: 
	ans += dic[i]
print(ans+len(S))

2941. 크로아티아 알파벳

Word = input()
word = 'A'+Word+'A'

ans = 0
croatian = ['c=', 'z=', 's=', 'lj', 'nj', 'c-', 'd-']


dzz = list(word.split('dz='))
word_dzz = ''
for d in dzz:
    word_dzz += d
    word_dzz += 'A'


word_len = len(list(word)) - list(word).count('A')
word_dzz_len = len(list(word_dzz)) - list(word_dzz).count('A')
num_dzz = (word_len - word_dzz_len)/3


for cro in croatian:
    word_new=''
    dz = word_dzz.split(cro) #['1', 'akz=', 'kdc-1']

    
    for i in dz:
        word_new += i
        word_new += 'A'

    word_dzz = word_new
               
word_new_len = len(list(word_new)) - list(word_new).count('A')
num_cro = (word_dzz_len - word_new_len)/2
ans = num_dzz + num_cro + word_new_len

print(int(ans)) #int안붙이니까 틀렸습니다 뜬다.. 소수점 때문인가

처음에 검색 없이 풀려고 하니까.. 함수 아는게 없어서 제일 기본적인 함수만 쓰게되니까 엄청 복잡하고 길고 무식해진다. 그래도 재밌긴함 ㅎㅎ 사실 기본함수로도 똑똑하게 푸는 방법 많지만...ㅎ

x = input()
y = len(x)
cro_al = ['c=','c-','dz=','d-','lj','nj','s=','z=']
for i in range(0, len(x)): #0에서 문자열의 길이만큼 반복해준다.
    if len(x) < 2: #문자가 2개보다 작으면 문자열의 길이를 출력한다.
        y = len(x)
    elif len(x) == 2: #문자가 2개일때 크로아티아 알파벳이라면 1을 출력한다.
        if (x[i-2] + x[i-1]) in cro_al:
            y = 1
    elif (x[i-3]+x[i-2]+x[i-1]) in cro_al: #연달아 있는 문자가 3개를 더했을 때 크로아티아 알파벳이라면 길이에서 -2를 해준다.
        y -= 2
    elif (x[i-2] + x[i-1]) in cro_al: #연달아 있는 문자가 2개를 더했을 때 크로아티아 알파벳이라면 길이에서 -1을 해준다.
        y -= 1
print(y)

요런방법도 있다. 출처: https://one-hour.tistory.com/25

x = input()
cro_al = ['c=','c-','dz=','d-','lj','nj','s=','z=']
for i in cro_al:
    x = x.replace(i, 'a')
print(len(x))

모범답안. replace함수가 있을것같긴 했다 ㅎㅎ

 

1316. 그룹 단어 체커

N = int(input())
cnt = N
for n in range(N):
    W = input()
    for i in range(len(W)-2):
        if W[i] != W[i+1] and W[i] in W[i+2:]:
            cnt -= 1
            break
print(cnt)

break가 어딜 탈출해서 어디로 가는건지 헷갈린다.

+ Recent posts