[PYTHON] 2588번 곱셈 strip()을 쓰는 이유/

    https://www.acmicpc.net/problem/2588

    문제 풀이

    • 첫 번째 input값에 두 번째 input값 요소를 하나씩 꺼내어 곱해주고 출력한다.
    • 마지막에 첫 번째와 두 번째 input값을 곱해 출력한다.

    코드 풀이

    1번째 시도 - 실패

    import sys
    a,b = map(int, sys.stdin.readline().strip().split('\n') )
    
    for n in b[::-1]: # 일의 자리부터 곱해야 하므로 b를 뒤집어서 차례대로 곱한다.
      print(int(a) * int(n)) # 472 * 5 / 472 * 8 /472 * 3
    print(int(a) * int(b)) # 472*385
    • 실패 원인
    1. a,b를 받을때 정수형으로 바꾸고 for문을 돌릴려고 했다.

    - 숫자형도 반복가능한 리터럴인지 알았다. => TypeError: 'int' object is not iterable

    1. 첫째 줄과 둘째 줄 input값을 split('\n')을 사용해 개행으로 나눌려고 했다.

    - 애초에 한 줄의 input값이 개행으로 구분되어진게 아니라 첫 번째 input이 들어오고 두 번째 input값이 들어온 것이였다. 입력값 설명을 잘 읽어야겠다.

    최종 코드 - 성공

    import sys 
    a = sys.stdin.readline().strip()
    b = sys.stdin.readline().strip()
    
    for n in b[::-1]: # 일의 자리부터 곱해야 하므로 b를 뒤집어서 차례대로 곱한다.
      print(int(a) * int(n)) # 472 * 5 / 472 * 8 /472 * 3
    print(int(a) * int(b)) # 472*385
    
    ''' 출력값
    2360
    3776
    1416
    181720
    '''

    새롭게 안 점 - strip

    • strip()을 쓰는 이유
      : stdin.readline()으로 input값을 받으면 끝에 \n을 달고 오기때문에 strip()을 사용해 문장 앞뒤 공백을 제거해야한다.
    import sys
    # '강아지'를 입력 받으면
    input = sys.stdin.readline()
    print(input) # '강아지\n'로 출력된다.
    
    input = sys.stdin.readline().strip() # 앞 뒤 공백을 제거
    print(input) # '강아지'로 출력된다.

    댓글