사용자로부터 공백을 기준으로 세 개의 정수를 입력받아 가운데 값을 출력하세요.
- 입력예시 :
1 3 2
- 출력예시 :
2
# 내 풀이 (오답풀이)
num = input().split() # str을 원소로 갖는 list
num.sort() # 사전순으로 정렬됨
print(num[1])
틀린이유 : num
은 공백 기준으로 숫자를 입력한 리스트이지만, 리스트 내에서는 문자열로 인식한다. 그래서 num.sort()
를 하게되면 사전순으로 정렬되기 때문에 num
에 12 9 11
을 입력하게 될 경우, 정렬되면 11 12 9
가 되어서 num[1]
을 할 경우 11
이 출력된다.
num_str = input().split() # 문자열 원소로 이루어진 리스트
num_int = list(map(int, num_str)) # num의 각 원소를 정수형으로 변환
num_int.sort() # 오름차순 정렬
print(num_int[1]) # 중간값 출력
** 리스트 원소의 자료형 변환 방법 :list(map(변환할 자료형, 변환할 리스트명))
# ex)
>>> sample = ['1', '2', '3', '4', '5'] # 문자열 원소로 이루어진 리스트
>>> sample_int = list(map(int, sample)
>>> print(samle_int)
[1, 2, 3, 4, 5]
>>> sample_str = list(map(str, sample_int))
>>> print(sample_str)
['1', '2', '3', '4', '5']
사용자로부터 특정 숫자(정수)가 입력되었을 때 그 다음의 숫자가 숫자가 3의 배수라면
짝!
을 출력하고 3의 배수가 아니라면 입력 받은 숫자의 다음 숫자를 출력하세요.
- 입력예시 :
11
-> 출력예시 :짝!
- 입력에시 :
7
-> 출력예시 :8
# 내 풀이(정답풀이)
num = int(input())
numnext = num + 1
if numnext % 3 == 0 :
print('짝!')
else:
print(numnext)
틀린이유 : 처음에는 3의 배수를 구하라고 해서, 3의 배수 판정법인 '각 자릿수의 합이 3의 배수이면 3의 배수이다.' 를 생각했다. 그래서 더 복잡하게 돌아갔던 것 같다. 생각해보면 정말 단순한 문제였다.
도도새는 1분에 하나씩 음식을 먹었고 먹은 음식은 매번 리스트의 형태로 저장해두었습니다. 또한 아팠던 시점에는 음식 리스트에 웩 이라고 저장이 되어 있습니다. 도도새가 아팠던 시점을 계산하여 그전까지 복통이 지속된 시간을 반환하는 vomit() 함수를 작성하세요.
- 입력예시 :
print(vomit(['과자', '과자', '과자', '커피', '과자', '웩', '음료수', '음료수', '과자', '커피', '커피', '커피']))
- 출력예시 :
5
## 내 풀이(오답풀이)
def vomit(food):
answer = ''
for i in food :
if food[i] == '웩' :
answer = i
return answer
# 값을 확인하기 위한 코드입니다. 값을 변경해가며 테스트해 보세요!
print(vomit(['과자', '과자', '과자', '커피', '과자', '웩', '음료수', '음료수', '과자', '커피', '커피', '커피']))
출력결과 : list indices must be integers or slices, not str
(해석 : 리스트의 인덱스는 문자열이 아니라 정수여야 한다.)
** indices
: index의 복수형
# 내 풀이 (정답풀이)
def vomit(food):
answer = ''
for i in range(0,len(food)) :
if food[i] == '웩' :
answer = i
return answer
# 값을 확인하기 위한 코드입니다. 값을 변경해가며 테스트해 보세요!
print(vomit(['과자', '과자', '과자', '커피', '과자', '웩', '음료수', '음료수', '과자', '커피', '커피', '커피']))
출력결과 : 5
틀린이유 : 문자열로 이루어진 리스트를 인덱싱할 때 각 인덱스번호는 문자열을 인식하게 된다. 따라서 인덱스 i가 숫자범위 내에서 반복될 수 있도록 정수범위(range(0,len(food))
)로 바꿔주면 i
는 인덱스 번호를, food[i]
는 인덱스 번호에 위치한 원소(문자열)를 가리킬 수 있게 한다.