백준 단계별로 풀어보기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가 어딜 탈출해서 어디로 가는건지 헷갈린다.