본 캠프 TIL

1월 14일 TIL (팀 프로젝트 발표)

meoca1257 2025. 1. 14. 09:58

팀프로젝트

대망의 발표날 

일정 나눠서 ppt 완성도 95%, 발표 대본 완성도 85% 

이제 리허설과 영상 제작하며 나머지 부족한 점 채우고 발표만 기다리면 될듯 

.. 주말에 날잡고 지금까지 공부한 내용 싸잡아서 정리하고 요약해야겠다 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

코드카타

하샤드 수 

코딩테스트 연습 - 하샤드 수 | 프로그래머스 스쿨

* 하샤드 수:  주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 나누어떨어지는 자연수

ex) 12의 경우 1+2=3이고, 12는 3으로 나누어떨어지므로 하샤드수이다.

* 하샤드 : 산스크리트어로 '기쁨을 주다'는 뜻

 

띵킹 타임

일단 정수를 문자화+리스트화 시켜 나열한 후 인트로 타입을 변경하고 인트+리스트 상태에서 하샤드 참/거짓을 판별

참일 경우 print("n의 모든 자릿수의 합은 x입니다. n은 x로 나누어떨어지므로 n은 하샤드 수입니다.") 를 각각 n,x값에 따라 출력되게끔 만들어주면 됨 

-> print("n의 모든 자릿수의 합은 x입니다. n은 x로 나누어떨어지므로 n은 하샤드 수입니다.") 이건 f'문 쓰면 어떻게 될듯

=> 음.. 머리가 굳는다 

=-> ........ 

 

오답 : return 값은 결과값이라 처음부터 정의하며 쓸 수 없음 // 다른 변수를 써서 return 값이 나오게 만들어줘야함

def solution(x):
    answer = list(str(x))
    a=0
    for i in range(len(answer)):
        a += int(answer[i])
        if x % a == 0:
            answer = True
        else:
            answer = False
    return answer

 

정답: 초반 answer 을 shit으로 바꿔 문제 해결

def solution(x):
    shit = list(str(x))
    a=0
    for i in range(len(shit)):
        a += int(shit[i])
        if x % a == 0:
            answer = True
        else:
            answer = False
    return answer

 

다른 풀이

def Harshad(n):
    return n%sum(int(x) for x in str(n)) == 0

1. list화 시킬 필요가 없었네 

2. 컴프리헨션 사용해서 줄였네 

 * 컴프리헨션 

temp = list([2, 3, 4, 5])

temp_new = list()

for i in temp:

      temp_new.append(i*2)

 

print(temp_new)

 

=>

 

temp = list([2, 3, 4, 5])

temp_new = list([i*2 for i in temp])

 

print(temp_new)

 

이걸 적용하면

def Harshad(n):
    return n%sum(int(x) for x in str(n)) == 0

=> (gpt 선생님 도움) 

def Harshad(n):

digit_sum = 0

for x in str(n):

     digit_sum += int(x)

return n % digit_sum == 0

 비교

def solution(x):
    shit = list(str(x))
    a=0
    for i in range(len(shit)):
        a += int(shit[i])
        if x % a == 0:
            answer = True
        else:
            answer = False
    return answer

   

1. list(str(x))에서 list 왜 썼지? -> 안써도 됨 list(str(x)) X str(x) O // 굳이 리스트로 만들 필요없이 문자열이면 코드 실행됨

2. 굳이 if문 안쓰고 결과값을 return n % digit_sum == 0 식으로 작성하면 자동으로 n % digit_sum == 0를 만족할땐 True

만족 안할땐 False로 bool타입으로 전환됨 이것도 몰랐네

3. 내가 직접한게 아니라 많이 자괴감 든다 .. 일단 지금까지 공부한 자료 정리해 궁금한것만 바로바로 볼 수 있는 나만의 사이트가 필요하다 느낌