archive
[섹션 2] #1 - #5 본문
문제 파일
#1 k번째 약수
def find_kth_divisor(divisor_list, n, k):
for i in range(1,n+1):
if(n%i==0):
divisor_list.append(i)
else:
continue
print(divisor_list[k-1])
divisor_list=[]
while True:
line=input()
firstline=line.split(' ')
#split 메소드는 매개변수로 전달받은 문자를 구분자로 문자열을 분리시켜 리스트로 반환한다
n=int(firstline[0])
k=int(firstline[1])
if(n>1 and n<10000 and k>1 and k<n):
find_kth_divisor(divisor_list, n, k)
break
else:
print("Wrong input, out of range. Input again.")
continue
#2 k번째 수
def kth_num():
line=input()
firstline=line.split(' ')
n=int(firstline[0])
s=int(firstline[1])
e=int(firstline[2])
k=int(firstline[3])
line=input()
num_list=line.split(' ')
intarr = list(map(int, num_list))
intarr=intarr[s-1:e]
intarr.sort()
print('#', i+1, " ", intarr[k-1])
test_num=int(input())
for i in range(test_num):
kth_num()
#3 k번째 큰 수
line=input()
firstline=line.split(' ')
n=int(firstline[0])
k=int(firstline[1])
line=input()
num_list=list(map(int, line.split()))
set_for_removing=set(num_list)
#set로 변환시켜 중복 값 제거
#set자료형은 인덱스 접근이 불가능하기 때문에 중복값 제거 후 다시 리스트로 변환 후 정렬하고 인덱스 접근
new_list=sorted(list(set_for_removing), reverse=True)
print(new_list[k-1])
**set 자료형 활용
#4 대표값
student_num=int(input())
line=input()
student_score_list=list(map(int, line.split()))
data_sum=0
for i in student_score_list:
data_sum=i
#올림 함수
score_average=round(data_sum/student_num, 0)
score_abs_list=[]
for i in range(len(student_score_list)):
score_abs_list.append(abs(student_score_list[i]-score_average))
closest_dict={}
index_list=[]
while(min(score_abs_list) in score_abs_list):
x=score_abs_list.index(min(score_abs_list))
#딕셔너리 형태로 학생번호(인덱스):성적 의 딕셔너리 페어 저장
closest_dict[x]=student_score_list[x]
index_list.append(x)
score_abs_list[x]=-1
if len(closest_dict)==1:
print(score_average, closest_dict[0])
else:
chosen_student_score=0
for i in index_list:
if closest_dict.get(i) > chosen_student_score:
chosen_student_score=closest_dict.get(i)
#점수가 같은 경우 학생 번호가 빠른 학생이 답이 되므로 값 변경 없이 continue로 수렴되기 때문에 밑에 코드로 흡수된다
else:
continue
print(score_average, chosen_student_score)
이렇게 했었는데 안 돌아감........
#5 다면체 합 빈도수
def platonic_solid_test(n, m):
original_sum_dict={}
for i in range(1,n+1):
for j in range(1,m+1):
if (i+j) in original_sum_dict:
original_sum_dict[i+j]=original_sum_dict[i+j]+1
else:
original_sum_dict[i+j]=1
max_frequency=max(original_sum_dict.values())
max_fre_keys=[]
for key, value in original_sum_dict.items():
if value==max_frequency:
max_fre_keys.append(key)
for i in max_fre_keys:
print(i, end=' ')
Platonic_solid_list=[4, 6, 8, 12, 20]
line=input()
input_list=list(map(int, line.split()))
n=input_list[0]
m=input_list[1]
if(n in Platonic_solid_list and m in Platonic_solid_list):
platonic_solid_test(n, m)
else:
print("Wrong input.")
'Python > Python 코테 준비' 카테고리의 다른 글
enumerate() (0) | 2024.03.14 |
---|---|
sort vs sorted (0) | 2024.03.13 |
is_integer(), isalnum() (0) | 2024.03.13 |
zip() 함수 (0) | 2024.03.11 |
Collections 모듈 정리 (0) | 2024.02.07 |