TIL

240624-(P) 33.약수의 개수와 덧셈 / 35.부족한 금액 계산하기 / 36.문자열 다루기 기본

승따리 2024. 6. 24. 14:54

33.약수의 개수와 덧셈

 

 

첫번째 작성 했던 코드

def solution(left, right):
    for i in range(left,right+1):
        answer=0
        num_a=0
        for n in range(1,i):
            if i%n==0:
                num_a=num_a+1
            else:
                num_a=num_a
                if num_a%2==0:
                    answer=answer+n
                else:
                    answer=answer-n
    return answer

 

 

원하는 결과 안나옴. 아무리 고민해봐도 뭐가 잘못된지 모르겠어서 다시 처음부터 짜봣는데

 

자꾸 마지막 결과가 right 값으로 나옴. 그래서 chatgpt한테 물어

 

일단 난 math를 import 안할꺼고 sqrt도 왜 썻는지 모르겠음

 

그래서 그냥 참고만 하고 다시 작성한게 아래 코드

 

def solution(left,right):
    result=0
    for i in range(left,right+1):
        divisor_count = 0
        for j in range(1,i+1):
            if i%j==0:
                divisor_count=divisor_count+1             #약수의 개수
            else:
                divisor_count=divisor_count
        if divisor_count%2==0:
            result=result+j
        else:
            result=result-j
    return result

 

 

 

 

성공


35.부족한 금액 계산하기 

 

전체가격이 필요할것이고 count 만큼 돌아야 하니 for 문 사용 해야겠다.

전체가격과 money 크기 비교를 통해 돈이 남는지, 부족한지를 판단해야 되니 if문 써야겠다.

def solution(price, money, count):
    total_price = 0
    for i in range(1, count + 1):
        total_price = total_price + price * i
    if total_price > money:
        answer = total_price - money
    else:
        answer = 0
    return answer

 

성공!


36.문자열 다루기 기본

 

 

 

혹시 문자열이 알파벳으로 구성되 있나 숫자로 구성되 있나 확인하는 방법이있을까? 구글링 시전

 

문자열.isdecimal() - 문자열이 int로 변환 가능하면 True / 아니면 False

문자열.isdigit() - 문자열이 숫자의 형태이면 True / 아니면 False

문자열.isnumeric() - 문자열이 숫자값을 표현하는 형태면 True / 아니면 False

 

일단 난 isdecimal() 을 썻는데 3개의 정확한 차이가 뭐지.....?

이런차이라고 한다. 인지만 해놓자.

 

 

문자열.isalapha() - 문자열이 알파벳이면 True / 다른거 섞여있으면 False

 

+@

문자열.isalnum() - 문자열이 숫자 알파벳이면 True / 아니면 False

 

위 지식을 활용해서 첫번째로 코드를 짠결과

def solution(s):
    answer = s.isdecimal()
    return answer

 

실패..

 

아...s의 길이가4와 6인걸 확인을 안했네...?

 

def solution(s):
    answer=s.isdecimal()
    if (len(s)==4 or len(s)==6):
        return answer
    else:
        return False

 

 

 

성공!