코딩테스트를 위한 백준 문제 풀어보기
두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.
첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.
첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력하시오.
= map(int, input().split())
N, K
= 0
result
for i in range(1, N + 1):
if N % i == 0:
-= 1
K if K == 0:
= i
result break
print(result)
양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다. \((1 ≤ T ≤ 10, 1 ≤ n ≤ 10^6)\)
각 테스트 케이스에 대해서, 1의 위치를 공백으로 구분해서 줄 하나에 출력한다. 위치가 낮은 것부터 출력한다.
= int(input())
t
for _ in range(t):
= int(input())
n = bin(n)[2:]
b
for i in range(len(b)):
if b[::-1][i] == '1':
print(i, end=' ')
def my_bin(num):
= num//2
a = num%2
b if a == 0:
return '1'
else:
return my_bin(a)+str(b)
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
input()
= list(map(int, input().split()))
l
= low = l[0]
high
for i in l[1:]:
if high < i:
= i
high if low > i:
= i
low
print(low, high)
= []
k =0
countfor _ in range(10):
= map(int, input().split())
a,b = count-a+b
count
k.append(count)print(max(k))
if n == 0:
= 0
ans elif n == 1:
= 1
ans else:
= [0,1]
f for i in range(n-1):
= sum(f)
nplus 0]=f[1]
f[1]=nplus
f[= nplus
ans print(ans)
= []
h for _ in range(9):
int(input()))
h.append(from itertools import combinations
= combinations(h, 7)
hs
for i in hs:
if sum(i)==100:
break
=list(i)
i
i.sort()
for k in i:
print(k)
= map(int, input().split())
a, b
# 직관적인 방법이지만 시간초과
for i in range(min(a,b), 0, -1):
if a%i == 0 and b%i == 0:
print(i)
break
for j in range(max(a,b), (a*b)+1):
if j%a == 0 and j%b == 0:
print(j)
break
# 유클리드 호제법
def gcd(a, b):
while b > 0:
= b, a%b
a, b
return a
def lcm(a, b):
return a*b//gcd(a,b)
print(gcd(a,b))
print(lcm(a,b))
= int(input())
n
for i in range(n):
= list(map(int,input().split()))
l
l.sort()print(l[-3])
= int(input())
n = list(map(int, input().split()))
l
for i in l:
if i == 1:
-= 1
n else:
for j in range(2, i):
if i%j == 0:
-= 1
n break
print(n)
= map(int,input().split())
a,b
= [0]
arr for i in range(45):
for j in range(i):
arr.append(i)
print(sum(arr[a:b+1]))
= int(input())
a = int(input())
b
= []
ans for i in range(a, b+1):
if i==1:
pass
else:
ans.append(i)for j in range(2,i):
if i%j == 0:
del ans[-1]
break
if len(ans) == 0:
print(-1)
else:
print(sum(ans))
print(min(ans))
For attribution, please cite this work as
nackta (2022, May 19). nackta blog: [백준 문제풀이] 기본기. Retrieved from https://nackta.github.io/til/2022-05-19-cotepart1/
BibTeX citation
@misc{nackta2022[백준, author = {nackta, }, title = {nackta blog: [백준 문제풀이] 기본기}, url = {https://nackta.github.io/til/2022-05-19-cotepart1/}, year = {2022} }