파이썬/ while loop을 이용한 각 자리의 수의 합

조회수 3035회

안녕하세요,

임의의수를 정수값으로 변수에 저장하고, 각 자리수의 합을 구하는데, 자리수가 2보다크고 8보다 작은 것들만의 합을 구하는 문제입니다. (산술 연산자를 이용해야 합니다.)

code = 12345678
sum = 0
while code:
    a = code%10
    if 2 < a <8:
        sum = a + sum
        code = code//10
    else:
        code = code//10
print(sum)

위처럼 풀이를 해보았는데, if 문을 쓰지 않고 while문 만으로 풀이한다면, 어떤 논리구조로 풀어 나갈 수 있는지 궁금합니다.

2 답변

  • code = 1234567894
    _str = str(code)
    _result = 0
    for i in _str:
        if (int(i) > 2) and (int(i) < 8):
            _result += int(i)
    print(_result)
    
    #산술연산자만썻을때
    _result = 0
    while (code > 0):
        b = int(code) % 10
        if (b > 2) and (b < 8):
            _result += b
        code /= 10
    print(_result)
    

    추가) 질문이 살짝 바뀌셧네요 if문을 쓰지 않고 싶어하시는 이유가 궁금하네요

    • 답변 감사드립니다! 알 수 없는 사용자 2020.4.17 16:56
    • 특별한 이유는 없고, 파이썬 시작한지 얼마 안됐는데 풀이가 while문 만으로도 가능한지 단순한 호기심입니다! 알 수 없는 사용자 2020.4.17 16:56
    • :P 가능은 한데 구지 써야하나 싶네요. 실제 동작은 if문쓰는 형태와 똑같고요. 효율성문제입니다 김호원 2020.4.17 17:08
  • limit = min(len(str(code)), 7)
    code = code // 100
    counter = 2;
    result = 0
    while counter < limit:
        result += code % 10
        code = code // 10
        counter += 1
    
    print(result)
    

    if를 안 쓰려면(이게 무슨 의미가 있는 건지는 모르겠지만) 미리 조건을 다 맞추고 반복문 안으로 들어가는 수 밖에 없어 보이는데요.

    극한 코딩 테스트인가...

    별해:

    # List Processing은 이래야 파이썬스럽다는게 제 개인적인 생각입니다.
    sum(map(int, str(code)[-7:-2]))
    
    • 호기심이셨다면 ㅇㅈ 합니다. 많은 시도 해 보시는거 좋아요 좋아. 화이팅! doodoji 2020.4.17 17:13
    • 답변감사합니다 ㅠㅠㅠ 처음이라 이것저것 궁금해서요! 오히려 더 복잡해 지는군요! 알 수 없는 사용자 2020.4.17 17:25

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)