코딩테스트 연습

[파이썬] 백준: 문자열 연습문제

콩콩(๓° ˘ °๓)♡ 2023. 1. 30. 08:46

#1120 숫자의 합

👉문자열을 리스트로 변환하는 방법

풀이 1. 주어진 조건 모두 사용 / 36ms

N=int(input())
s=list(map(int, str(input())))

a=0
for i in range(N):
    a += s[i]
    
print(a)

숫자개수 N을 int로 입력받고,

숫자열을 str으로 입력받아 list 형태로 저장하면 각각의 숫자가 별개의 원소로 저장되나,

연산을 위해 int형식으로 매핑하여 받아줌.

-> for문을 사용하여 N회만큼 원소를 덧셈치환하여 이 값을 프린트.

 

풀이2. 불필요한 조건 생략 / 36ms

N=int(input())
s=list(map(int, str(input())))
print(sum(s))

어차피 문제에서 주어지는 연산은 한자리의 정수를 더하는 것이므로

구분자가 없는 string를 한글자씩 구분하여 저장하는 list 자료형을 사용.

list의 각 원소의 총합을 구한다. 단, 연산을 위해 입력과정에서 int형식으로 변환이 필요함.

 

#10809 알파벳 찾기

풀이 1. for문 이용

S = list(input())
abc = 'abcdefghijklmnopqrstuvwxyz'

for i in abc:
	if i in S:
    	print(S.index(i), end = ' ')
    else:
    	print(-1, end = ' ')

abc 문자열의 i번째 글자가 입력받은 S에 있으면 S에서의 위치를, 없으면 -1을 출력한다.

 

풀이 2. find 함수 이용

S = input()

for x in 'abcdefghijklmnopqrstuvwxyz':
	print(S.find(x), end =' ')

알파벳 문자열의 x번째 글자가 입력받은 S에 있으면 그 위치를, 없으면 -1을 출력한다.

 

#2908 상수

A, B = input().split()
A = int(A[::-1])
B = int(B[::-1])

print(A) if A>B else print(B)

문자열의 배열을 역순으로 바꾸는 방법은 [::-1]을 붙여주는 것이다.

마지막의 프린트는 삼항 연산자 표현식으로 작성된 코드이다.

 

#5622 다이얼

alphabet_list = ['ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ']
word = input()

time = 0
for unit in alphabet_list:
    for i in unit:
        for x in word:
            if i==x:
                time += alphabet_list.index(unit) +3
print(time)

for문을 여러번 중첩하여 한 사이클에서 여러개의 반복문이 돌아가게 만들었다.

 

#2941 크로아티아 알파벳

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

for i in croatia:
    word = word.replace(i,'*')
print(len(word))

크로아티아 알파벳을 별개의 기호 *로 대체하여 문자열의 길이를 출력했다.

 

#1316 그룹 단어 체커

n = int(input())

group_word = 0
for _ in range(n):
    word = input()
    error = 0
    for index in range(len(word)-1):  
        if word[index] != word[index+1]: 
            new_word = word[index+1:] 
            if new_word.count(word[index]) > 0: 
                error += 1 
    if error == 0:  
        group_word += 1 
print(group_word)

그룹단어가 아닌 경우를 판별하기 위한 알고리즘을 짜주었다.

알파벳이 바뀌는 구간에서 앞은 버리고 뒤의 남은 문자열을 new_word로 정의해주고, 

new_word에 직전 구간의 알파벳이 있는지 체크한다.

이때, 반복문이 도는 구간을 (단어길이-1)까지 지정해야하는데,

반복문에 해당 인덱스와 다음 인덱스의 글자를 비교하는 조건이 있기 때문이다.

구간이 이렇게 지정되지 않으면 Index error가 발생한다.