1. k번째 약수
#import sys
#sys.stdin=open("input.txt","rt")
#n=input()
#a = int(n.split(" ")[0])
#b = int(n.split(" ")[1])
#count = 0
#result = -1
#for i in range(1,a+1):
# if a%i==0:
# count+=1
# if count==b:
# result = i
# break
#print(result)
# 풀이
import sys
#sys.stdin = open("input.txt", "rt")
n, k = map(int, input().split())
cnt = 0
for i in range(1, n+1):
if n % i == 0:
cnt+=1
if cnt == k:
print(i)
break
else:
print(-1)
2. k번째 수
import sys
#sys.stdin = open("in1.txt", "rt")
T = int(input())
for t in range(T):
n, s, e, k = map(int, input().split())
a = list(map(int, input().split()))
a = a[s-1:e]
a.sort()
print("#%d %d" %(t+1, a[k-1]))
3. k번째 큰 수
import sys
#sys.stdin = open("in1.txt", "rt")
N, k = map(int, input().split())
numList = list(map(int, input().split()))
res = set()
for i in range(0,N):
for j in range(i+1,N):
for p in range(j+1,N):
res.add(numList[i]+numList[j]+numList[p])
res=list(res)
res.sort(reverse=True)
print(res[k-1])
4. 대표값
import sys
#sys.stdin = open("in1.txt","rt")
n = int(input())
list = list(map(int,input().split()))
avg = round(sum(list)/n)
min = 2147000000
for idx, x in enumerate(list):
tmp = abs(x-avg)
if tmp<min:
min = tmp
score = x
res = idx+1
elif tmp == min and score < x:
score = x
res = idx+1
print("%d %d" %(avg, res))
5. 정다면체
#정다면체
import sys
#sys.stdin = open("in1.txt", 'rt')
n,m = map(int, input().split())
sum = {}
# 딕셔너리 만들기
for i in range(1,n+1):
for k in range(1,m+1):
sum[i+k] = 0
# 정다면체 합 기록하기
for i in range(1,n+1):
for k in range(1,m+1):
sum[i+k] = sum[i+k]+1
# 가장 높은 확률의 합 찾기
max = 0
valueList = list(sum.values())
for i in range(len(valueList)-1):
for k in range(1,len(valueList)):
if(max < valueList[k]):
max = valueList[k]
# 결과
for i in sum:
if sum[i] == max:
print(i, end=' ')
6. 자릿수의 합
# 자릿수의 합
import sys
sys.stdin = open("in1.txt","rt")
# 1. 입력
n = int(input())
numList = list(map(int, input().split()))
# 2. 합계산 함수 정의
def digit_sum(x):
xList = list(map(int, str(x)))
return sum(xList)
# 3. 가장 큰 합과 그 수 프린트하기
maxSum = 0
#maxNum = numList[0]
for i in numList:
numSum = digit_sum(i)
if numSum > maxSum:
maxSum = numSum
maxNum = i
print(maxNum)
7. 소수(에라토스테네스 체)
# 소수
import sys
#sys.stdin = open("in2.txt","rt")
n = int(input())
# 1. 리스트 만들기
numList = [0]*(n+1)
# 2. 반복문 돌면서 소수 찾아내기
count = 0
for i in range(2,n+1):
if numList[i] == 0:
count+=1
for k in range(i,n+1, i):
numList[k] = 1
print(count)
8. 뒤집은 소수
# 뒤집은 소수
import sys
#sys.stdin = open("in3.txt", "rt")
# 1. 입력
n = int(input())
numList = list(map(int, input().split()))
# 2. 뒤집기 함수
def reverse(x):
xList = list(map(int, str(x)))
result = ''
for i in range(len(xList)-1,-1,-1):
result = result + str(xList[i])
return int(result)
# 3. 소수판별 함수
def isPrime(x):
isP = True
for i in range(2,x):
if x % i == 0:
isP = False
break
if(x == 1):
isP = False
return isP
# 4. 소수출력
for i in numList:
if(isPrime(reverse(i))):
print(reverse(i), end=' ')
9. 주사위 게임
# 주사위 게임
import sys
#sys.stdin = open("in1.txt","rt")
n = int(input())
max = 0
def calPrice(flag, value):
if(flag == 1):
return value * 100
elif(flag == 2):
return 1000 + value * 100
else:
return 10000 + value * 1000
for i in range(n):
diceList = list(map(int, input().split()))
flag = 1
value = diceList[0]
if(diceList[0]==diceList[1]):
flag+=1
if(diceList[0]==diceList[2]):
flag+=1
if(diceList[1]==diceList[2]):
flag+=1
value = diceList[1]
result = calPrice(flag, value)
if(max < result):
max = result
print(max)
10. 점수 계산
# 점수계산
#1. flag 변수로 이전값이 1이었는지 확인한다.
#2. 해당값이 1이라면 flag = true를 주고, count++한다
import sys
#sys.stdin = open("in1.txt","rt")
n = int(input())
oxList = input().split()
flag = False
count = 1
res = 0
for i in oxList:
if i=='1' and flag:
count+=1
res+=count
flag = True
elif i=='1' and flag==False:
count=1
res+=count
flag = True
else:
count=1
flag = False
print(res)
#print(oxList)
728x90
'Algorithm > 문제풀이' 카테고리의 다른 글
프로그래머스- 코테 고득점 kit - 해시: 위장 (0) | 2022.03.07 |
---|---|
섹션 3. 탐색 & 시뮬레이션 (0) | 2021.04.22 |
댓글