2022. 11. 8. 01:26ㆍ파이썬(Python)
Q) 긴 문자열
- 두 개의 단어를 입력
- 더 긴 단어와 두 단어의 길이의 차를 출력
- 두 단어의 길이가 같다면 'same' 출력
a,b=input().split()
if len(a)<len(b):
print(b,len(b)-len(a))
elif len(a)==len(b):
print('same')
else:
print(a,len(a)-len(b))
결과
>> banana apple
banana 1
>> hello world
same
Q) 문자 개수 세기
- 공백을 포함할 수 있는 문자열 입력
- 알파벳 1개 입력
- 주어진 문자열에 해당 알파벳이 몇 개 있는지 출력
string=input()
word=input()
cnt=0
for elem in string:
if elem==word:
cnt+=1
print(cnt)
결과
>> hello world
>> l
3
Q) 문자열 길이의 합
- 자연수 n을 입력
- n개의 문자열을 입력
- 알파벳 입력
- 모든 문자열 길이의 합과 입력한 알파벳이 등장한 횟수를 출력
n=int(input())
arr=[input() for _ in range(n)]
word=input()
len_sum=0
word_cnt=0
for elem in arr:
len_sum+=len(elem)
for elem_word in elem:
if elem_word==word:
word_cnt+=1
print(f'문자열의 총 길이는 {len_sum}')
print(f'{word}의 등장한 횟수는 {word_cnt}')
결과
>> 3
>> apple
>> melon
>> pear
>> e
문자열의 총 길이는 14
e의 등장한 횟수는 3
Q) 특정 문자로 끝나는 문자열
- 자연수 n을 입력
- n개의 문자열과 1개의 알파벳 입력
- 입력한 알파벳으로 끝나는 문자열을 출력.
- 문자열의 개수와 문자열들의 길이의 평균 출력
n=int(input())
arr=[input() for _ in range(n)]
word=input()
string_cnt=0
sum_len=0
for elem in arr:
if elem[-1]==word:
print(elem)
string_cnt+=1
sum_len+=len(elem)
print(f'{word}로 끝나는 단어의 개수는 {string_cnt}')
print(f'{word}로 끝나는 단어들의 길이 평균은 {sum_len/string_cnt:.2f}')
결과
>> 5
>> apple
>> banana
>> orange
>> grape
>> red
>> e
apple
orange
grape
e로 끝나는 단어의 개수는 3
e로 끝나는 단어들의 길이 평균은 5.33
Q) Run Length 인코딩
- Run Length : 비손실 압축 방식. 연속해서 나온 문자와 연속해서 나온 개수로 나타냄.
- 문자열을 입력 후 Run Length를 적용한 문자열의 길이와 결과를 출력
string=input()
word=string[0]
encoding=''+word
cnt=1
for elem in string[1:]:
if elem==word:
cnt+=1
else:
word=elem
encoding+=str(cnt)
encoding+=word
cnt=1
encoding+=str(cnt)
print(len(encoding))
print(encoding)
결과
>> aaaaaaaaaabb
5
a10b2
- encoding : Run Length를 적용한 문자열.
- encoding의 초기값은 입력한 문자열 (string)의 첫 번째 문자
- word는 string을 순회하며 비교할 대상의 문자
- string의 두 번째 문자부터 순회하며 word와 비교.
- word와 같으면 cnt(word의 개수)를 1 증가
- word와 다르면 word를 비교한 문자로 갱신. encoding에 cnt와 word를 concat. cnt를 1로 초기화
- 순회가 끝나면 나머지 cnt를 encoding에 concat
- encoding의 길이와 결과 출력
Q) 숫자 나누기
- 자연수 n을 입력
- 숫자로만 이루어진 문자열을 n개 입력
- 자연수 m을 입력
- m개씩 나누어서 출력
n=int(input())
arr=list(map(int,input().split()))
m=int(input())
num=''
for elem in arr:
num+=str(elem)
for i in range(0,len(num),m):
if i+m>len(num):
print(num[i:len(num)])
else:
print(num[i:i+m])
결과
>> 5
>> 123 98 66 45 377
>> 3
123
986
645
377
- n개의 숫자들을 입력 후 str type의 num 변수에 각 숫자들을 str로 변환하여 concat
- num의 index를 기준으로 m만큼 slicing => num [i:i+m]
- i+m이 len(num)을 초과하면 len(num)-1까지 slicing
'파이썬(Python)' 카테고리의 다른 글
문자열 회전, 아스키 코드 (0) | 2022.11.10 |
---|---|
문자열 문제풀이2 (0) | 2022.11.09 |
문자열 (0) | 2022.11.03 |
2차원 배열 활용 2 (0) | 2022.11.03 |
2차원 배열 활용 (0) | 2022.10.28 |