99클럽 코테 스터디 4일차 TIL + 정수 변환

박채오·2024년 7월 26일
0

항해99

목록 보기
4/4

문제 설명

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.

제한사항

  • s의 길이는 1 이상 5 이하 입니다.
  • s의 맨 앞에는 부호(+, -)가 올 수 있습니다.
  • s는 부호와 숫자로만 이루어져 있습니다.
  • s는 "0"으로 시작하지 않습니다

입출력 예

  • 예를 들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
  • str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.

오늘의 학습 키워드

  • 문자열
  • 정수

오늘의 회고

어떤 문제가 있었고, 나는 어떤 시도를 했는지

def solution(s):
    answer = 0
    for i in s:
        answer = answer * 10 + int(i)
    return answer
  • 문자열의 각 숫자를 순서대로 처리하였습니다. 예를 들어, "123"이라는 문자열이 입력되면, 다음과 같이 처리됩니다:
  1. 처음에 answer = 0
  2. '1'을 처리: answer = 0 * 10 + 1 = 1
  3. '2'를 처리: answer = 1 * 10 + 2 = 12
  4. '3'을 처리: answer = 12 * 10 + 3 = 123

무엇을 새롭게 알았는지

def solution(s):
    return int(s)
  • return int(s)는 s를 정수로 변환한 값을 반환할 수 있습니다. 간단하게 문자열을 int로 감싸면 되었습니다.

다른 방법

  1. 제한 사항 추가 :
def solution(s):
    if not s:
        raise ValueError("빈 문자열은 입력할 수 없습니다.")
    if not 1 <= len(s) <= 5:
        raise ValueError("문자열의 길이는 1 이상 5 이하여야 합니다.")
    
    if s[0] in ['+', '-']:
        if len(s) == 1:
            return s  # '+' 또는 '-' 단독으로 입력된 경우
        if s[1] == '0':
            raise ValueError("s는 '0'으로 시작할 수 없습니다.")
    elif s[0] == '0':
        raise ValueError("s는 '0'으로 시작할 수 없습니다.")
    
    for char in s[1:] if s[0] in ['+', '-'] else s:
        if not char.isdigit():
            raise ValueError("s는 부호와 숫자로만 이루어져야 합니다.")
    
    return int(s)  # 문자열을 그대로 정수로 변환
  • ValueError 를 사용하여 잘못 입력된 부분을 에러 처리합니다.
  • 문자열 첫 문자가 부호인지 확인하고, 부호 다음에 0이 오면 오류 발생 시킵니다.
  • 문자열이 0으로 시작하면 오류를 발생 시킵니다.
  • 부호가 있으면 두 번째 문자부터 변환하는데 각 문자가 숫자인지 확인합니다.

조건부 표현식(삼항 연산자)

  • 구조: 결과 if 조건 else 다른_결과
x = 10
result = "양수" if x > 0 else "음수 또는 0"
print(result)  # "양수" 출력
for char in s[1:] if s[0] in ['+', '-'] else s:
  • 조건부 표현식 부분:
    s[1:] if s[0] in ['+', '-'] else s
    - if s[0] in ['+', '-']: 문자열의 첫 문자가 '+' 또는 '-'인지 확인합니다.
    - 조건이 참이면 s[1:]를 사용 (첫 문자를 제외한 나머지 문자열)
    - 조건이 거짓이면 s를 그대로 사용 (전체 문자열)
  • for 루프:
    for char in [위의 조건부 표현식 결과]:
    - 조건부 표현식으로 결정된 문자열의 각 문자에 대해 반복합니다.

0개의 댓글