00osos   4년 전

이 코드에서 f'{input()}\n{i+1} 부분에서 input으로 9개까지의 값을 받고서 멈추는 것은 i가 0부터 8까지 실행되었기 때문이라는 것은 알고 있는데,

이 과정에서 input으로 인해 매 줄마다 값을 하나씩 입력하여야 하는데 그렇다면 왜 {i+1}은 매줄마다 나오지 않고, 마지막 줄에만 생성되나요?

제가 스스로 해석해 보았을때는 i+1이 for문보다 먼저 나와서 i가 아직 정해지지 않아 그런거 같은데 맞는지 궁금합니다.

만약 틀리다면, 왜 {i+1}이 마지막에만 나오는지 알려주세요!

00osos   4년 전

참고로 문제의 질문은 9개의 숫자를 한줄에 하나씩 입력받고, 결과값으로 가장 큰 수와, 가장 큰 수가 몇번째였는가? 입니다.

sait2000   4년 전

이 코드를 실행해보시면 문자열 9개로 이루어진 list가 출력될 겁니다. 그냥 그 중에서 최대값을 출력하는 코드입니다. 게다가 수를 문자열로 비교하면 틀려야 정상인데 (예를 들어 9 < 10이지만 '9' > '10'입니다) 데이터가 약해서 정답 처리 됐습니다.

sait2000   4년 전

참고로 f'...'는 string interpolation하는 문법입니다.

dyk777   4년 전

f'{input()}\n{i+1}'for i in range(9)

로부터 여러 숫자들과 사이 줄바꿈이 포함된 "문자열"의 "리스트"가 생성이 되고,

max()함수가 이 리스트로부터 최댓값을 어떻게든 뽑아내어 print()에 전달하여 출력이 되는 구조입니다.

한가지 알아야 할 점은, 정수의 리스트가 아니라는 점이죠.

["111\n1","20\n2", ... ("(맨 앞자리 숫자가 1인 7개의 정수)\n(i+1)"로 표현되는 문자열들]의 형태가 됩니다.

문자열들을 비교하여 문자열의 최댓값을 뽑아내기 때문에, "111\n1"이 아니라 "20\n2"가 출력됩니다.

dyk777   4년 전

리스트를 조금 잘못 썼는데, ["111,\n1", "20\n2", "(맨 앞자리 숫자가 1인 정수)\n(i+1)"로 표현되는 문자열들 7개]입니다.

00osos   4년 전

앗...두분다 정말 감사합니다 ㅜ 진짜진짜 궁금했었는데 알려주셔서 감사해요!!

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