1차원배열
10818번 최소,최대
방법1
limit = int(input())
while True:
a = list(map(int,input().split()))
if len(a) == limit :
max = a[0]
min = a[0]
for i in range(len(a)):
if max < a[i]:
max = a[i]
if min > a[i]:
min = a[i]
print(min, max)
break
else:
print("다시 입력하세요")
방법2
limit = int(input())
while True:
a = list(map(int,input().split()))
if len(a) == limit :
print(min(a),max(a))
break
else:
print("limit 수보다 많은 수를 입력했습니다."
print("다시 입력해 주세요")
방법3
limit = int(input())
while True:
a = list(map(int,input().split()))
if len(a) == limit :
a.sort()
print(a[0])
print(a[len(a)-1])
break
else:
print("다시 입력하세요")
if len(a) == limit
방어코드로 처음 입력받은 수보다 더 많은 수를 입력하게 될 경우 다시 입력받는 식으로 코드를 구현
방법1
for문을 이용해서 list안의 요소들을 하나씩 돌면 비교하며 최대값과, 최소값을 업데이트
첫번째 요소를 max = a[0]
min = a[0]
으로 설정 후 for문을 돌면서 새로운 데이터로 업데이트
방법2
min()
max
함수를 이용해서 구현
방법3
sort()함수를 이용해서 정렬 후 첫번째 요소와 마지막 요소를 출력
오름차순으로 정렬되므로 첫번째 값은 최소값이 되고, 마지막 요소는 최대값이 된다.
2562번 최댓값
방법1
result = []
for i in range(9):
number = int(input())
result.append(number)
print(max(result))
print(result.index(max(result))+1)
방법2
result = []
for i in range(9):
number = int(input())
result.append(number)
max = result[0]
for i in range(len(result)):
if max < result[i]:
max = result[i]
max_pos = i + 1
print(max)
print(max_pos)
방법1
max()
함수와index()
함수를 이용해서 구현
index()
함수는 ()에 요소의 값을 넣었을 경우 있으면 인덱스 번호, 없으면 -1을 반환한다.
결과로는 몇 번째 있는지를 물었으므로 인덱스 번호에 +1한 값을 구한다.
방법2
첫번째 요소를 최대값으로 놓고 요소를 돌면서 최대닶 업데이트하는 식으로 구현
2577번 숫자의 개수
result = []
for i in range(3):
a = int(input())
result.append(a)
multi = result[0] *result[1]*result[2]
multi = str(multi)
for i in range(10):
print(multi.count(str(i)))
3052번 나머지
result = []
for i in range(10):
a = int(input())
result.append(a)
new_result = []
for i in range(len(result)):
remainder = result[i] % 42
new_result.append(remainder)
final_list =[]
for i in new_result:
if i in final_list:
pass
else:
final_list.append(i)
print(len(final_list))
42로 나눈 나머지 값들을 리스트로 만들었다.
다른 결과리스트를 만들고 나머지리스트를 for문을 돌려서 만약 final_list
결과 리스트 안에 값이 있다면 pass, 아니라면 append해 주었다.
그리고, final_list
의 길이를 구하면, 중복되지 않는 값을 구할 수 있다.
1546번 평균
a = int(input())
score_list = list(map(int, input().split()))
avg = max(score_list)
a = [score/avg*100 for score in score_list]
new_avg = sum(a)/len(a)
print(new_avg)
8958번 OX퀴즈
a = int(input())
for i in range(a):
b = input().split()
point = 1
score = 0
if b[0][0] == "O":
score = score + point
else:
pass
for j in range(1, len(b[0])):
if b[0][j] == "O":
if b[0][j-1] == "O":
point = point+1
else:
point = 1
score = score + point
print(score)
4344번 평균은 넘겠지
여러번 실패
방법1
cases = int(input()) #케이스 수를 받는다.
new_result = []
for _ in range(cases): #케이스 수 만큼 반복문을 수행
b = list(map(int,input().split())) 학생수와 성적을 받은 것을 리스트로 만든다.
score_sum = sum(b[1:]) #sum() #함수와 슬라이싱을 이용한 합계
scroe_avg = score_sum/b[0] #합계를 학생 수로 나누어서 평균
result = []
##이부분에서 틀림 for문을 돌아야 되는 것은 점수에 해당 하는 1번째 부터이다.
for i in b[1:]:
if i > scroe_avg:
result.append(i) #결과를 다른 리스트에 append
ratio = len(result)/b[0] *100
new_result.append(ratio)
for i in new_result: # 결과 리스트를 돌면서 출력
print(str(format(i, ".3f")) + "%")
방법2 - 위의 코드와 대부분 같다.
방어코드를 추가 해주었다.
cases = int(input())
new_result = []
for _ in range(cases):
while True:
b = list(map(int,input().split()))
if b[0] == len(b[1:]):
score_sum = sum(b[1:])
scroe_avg = score_sum/b[0]
result = []
for i in b[1:]:
if i > scroe_avg:
result.append(i)
ratio = len(result)/b[0] *100
new_result.append(ratio)
break
else:
print("학생의 숫자와 점수의 수가 다릅니다.")
for i in new_result:
print(str(format(i, ".3f")) + "%")
방법2
방어코드를 추가 해주었다.
학생 수와 점수를 받는 입력코드에서 만약 학생 수보다 점수가 많거나 적으면 다시 입력받게 while문
을 이용해서 무한 루프를 돌며, if문
으로 b[0]
과 len(b[1:])
의 길이 가 같은지로 조건을 만들었다.