[백준] 문자열 분석 10820번 파이썬 Python 자료구조

Jeony·2021년 11월 24일
0

백준

목록 보기
16/25
post-thumbnail

📌생각해보기

  1. 몇개의 문자열이 들어오는지 모르는 상황에서 어떻게 input을 받을 것인가.
    -> 몇개의 문자열이 들어오는지 모르기에 sys.stdin.readline()을 사용한다.
    -> sys.stdin.readline()은 개행문자('\n')를 받는다. 없애기 위해서 rstrip('n\')을 사용한다.

  2. 소문자, 대문자, 숫자, 공백을 어떻게 구분할 것있가?
    -> 방법 1. 전용함수(islower(), isupper(), isdigit())를 사용한다.
    -> 방법 2. 'a'<=비교<='z', 'A'<=비교<='Z'

📌내가 작성한 코드

import sys

while True:
    s = sys.stdin.readline().rstrip('\n')

    if not s:
        break
    
    small, capital, num, space = 0, 0, 0, 0

    for i in range(len(s)):

        if s[i].islower():
            small += 1

        elif s[i].isupper():
            capital += 1
        
        elif s[i].isdigit():
            num += 1

        else:
            space += 1

    print(small, capital, num, space)

📌풀이

  1. n개의 문자열이 들어올 수 있도록 while문 안에서 문자열을 받는다.
    반복문 안에서의 입력은 input()보다 sys.stdin.readline()를 사용해서 처리속도를 높인다.
    sys.stdin.readline()은 개행문자('\n')를 받으므로 없애기 위해서 rstrip('n\')을 사용한다.
    만약 s에 문자가 들어오지 않으면 종료 시키도록 한다.

    💡 rstrip() : a 변수에서 맨 오른쪽에 vv가 붙어 있는 것을 없앤다.
    a = abcdvv -> a.rstrip('vv') -> abcd
import sys

while True:
    s = sys.stdin.readline().rstrip('\n')

    if not s:
        break
  1. while문 안에서 소문자, 대문자, 숫자, 공백을 구분한다.

    💡 islower() : 소문자면 True, 아니면 False를 반환한다.
    💡 isupper() : 대문자면 True, 아니면 False를 반환한다.
    💡 isdigit() : 숫자면 True, 아니면 False를 반환한다.
small, capital, num, space = 0, 0, 0, 0

    for i in range(len(s)):

        if s[i].islower():
            small += 1

        elif s[i].isupper():
            capital += 1
        
        elif s[i].isdigit():
            num += 1

        else:
            space += 1
profile
알고리즘으로 문제를 해결하다가 포기함

0개의 댓글