소개
게시글
질문&답변
격자판 최대합
안녕하세요. 제가 선생님은 아니지만.. 혹시 도움이 될까 해서 댓글 남겨 봅니다. 리스트의 [:] 는 어떤 범위를 지정하여 부분 집합 처럼 따로 잘라오는 것 입니다 (참고 : https://dojang.io/mod/page/view.php?id=2208) 지금 같이 아무 숫자도 넣지 않은 경우에는 전체 영역을 말하는 것이 됩니다. 그러니까 mat[:] 의 0번째 와 mat의 0번째 리스트는 같은 것 을 말하는 것 입니다. 열의 합을 구하려면 for문을 한번 더 쓰셔야 할 것 같습니다.
- 0
- 1
- 217
질문&답변
res..?
res 의 역할은 input 으로 들어오는 변수 들 중 tot 값이 가장 큰 요소를 저장 하는 역할 입니다. 선생님 께서 작성 해주신 코드를 잘 살펴 보면, for 문으로 input의 숫자 리스트를 하나씩 꺼내고 있습니다. 하나씩 꺼낼때마다 변수 x에 한번씩 들어가고 있어요. tot변수는 이 숫자의 자릿수 합을 구하는 함수에 x를 넣어서 리턴 받은 값을 저장 하고 있고요. 우리가 원하는 것은 각 숫자 중에서 자릿수 의 합이 가장 큰 값을 출력 하는 것 입니다. 그래서 if 문으로 max 값과 tot 값을 비교해서 위 숫자들 중 가장 합이 큰놈을 찾아낼 거에요. 그리고 동시에 res 에 숫자를 저장 해놓으면 for 문을 다 돌고 나서 res 에는 tot 값이 가장 큰 x 가 저장 되어있게 됩니다. 이렇게 저장되는 이유는 if 문으로 max와 tot 값을 비교하고 max값을 계속 갱신 하기 때문입니다. 아무리 많은 요소를 for 문으로 돌려도 if 문의 조건에 해당하지 않으면 if 문 내부의 구문은 실행 되지 않아요. 그러니까 for 문을 다 돌리고 나왔을 때 res에 저장되어있는 값은 max 값을 가지는 x 의 값이 남아있게 됩니다.
- 0
- 1
- 296
질문&답변
질문있습니다!
선생님은 아니지만... 뒤에 공백 없이 문자 사이에만 공백이 들어가게 하고 싶으신 경우에는 join 을 사용해보시면 좋을 것 같습니다! "구분 문자열".join(리스트) 이렇게 사용하시면 됩니다! 저 같은 경우에는 k = map(str, [x for x in sum.keys() if sum[x] == value_max])## 이렇게 int 리스트를 str 리스트로 변경 한다음에 print(" ".join(k))# 이렇게 사용 했습니다.
- 0
- 1
- 155
질문&답변
똑같이 작성했는데 답이 130이 나오네요.. 뭐가 틀린걸까요??
3번째 for 문의 변수 명이 k 로 되어있습니다. 그런데 가장 아래 res 에서 인덱스 를 불러오기 위한 변수도 k 로 되어있어요. 이 경우 k에는 for문에서 마지막으로 저장된 숫자가 들어있게 됩니다. k를 한번 출력 해보시고, for 문의 k 를 다른 변수명으로 변경 해보세요!
- 0
- 1
- 216