minjon3757   1년 전

어디서 틀린걸까요? 찾아주실 수 있나요?

uiopyt12   1년 전

우선 a,b,c = list(map(int, input().split()))를 사용하시면 굳이 리스트에 넣어주실 필요가 없게됩니다. 그리고 리스트의 변수명으로 list를 사용하셨는데 내장함수로 list()가 있으니 다른 이름을 사용하는 것을 추천드립니다.

  1. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다
  2. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
  3. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.

1번 경우는 if문에서 잘 작성하신 것 같습니다. if문의 조건식 코드를 더 간결하게 a==b and b==c로 바꾸실 수 있습니다.

2번 경우 즉 a==b!=c, a!=b==c, c==a!=b인 경우에 대해서는 elif 문의 조건식과는 다릅니다.

elif문의 조건식은 a!=b!=c로 세 수가 모두 다른 경우입니다. 따라서 다음과 같이 코드를 작성하시거나

elif a == b :
    sum = 1000 + a * 100
elif b == c :
    sum= 1000 + b * 100
elif c == a :
    sum = 1000 + c * 100

작성자님 코드의 4번째 줄에서 정렬을 해두었기 때문에 세 수가 모두 같은 경우는 위의 if문에서 실행되었을 것이고, elif문까지 온 경우는 적어도 한 수는 다른 수와 다른 경우일 것입니다. 그리고 거기서 아래 elif문의 조건식인 a==b or b==c에 걸리는 경우는 [x,x,y] 혹은 [x,y,y]로만 나타나고 가운데 수는 항상 같은 눈이 나온 수니 

elif list[0]==list[1] or list[1]==list[2]:

    sum = 1000 + (list[1]*100)

으로 작성하셔도 될 것 같습니다.

3번 경우인 a!=b!=c는 작성자님 코드의 elif문에서 사용하신 a!=b and a!=c and b!=c를 사용하시면 될 것 같습니다. 또한 이 리스트는 정렬되어있기 때문에 가장 큰 수는 리스트의 마지막에 올 것이고 따라서

else :

    sum = list[-1] * 100

이 될 것입니다. 마지막으로 결과를 print(sum)을 통해 출력해주시면 될 것입니다. 

참고로 리스트의 최대값 혹은 최소값을 구하고 싶으시면 max()와 min()함수에 대해 알아보시는 것을 추천드립니다.

궁금한 사항 있으시면 다시 질문해주시길 바랍니다.

uiopyt12   1년 전

2번 경우 설명에서

elif문의 조건식인 a==b or b==c 이 아니라

list[0]==list[1] or list[1]==list[2]입니다.

댓글을 작성하려면 로그인해야 합니다.