1. [2745] 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
N, B = input().split()
digits = {"0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9,
"A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15, "G": 16, "H": 17, "I": 18, "J": 19,
"K": 20, "L": 21, "M": 22, "N": 23, "O": 24, "P": 25, "Q": 26, "R": 27, "S": 28, "T": 29,
"U": 30, "V": 31, "W": 32, "X": 33, "Y": 34, "Z": 35}
num = 0
for i in range(len(N)):
num += int(digits[N[::-1][i]])* int(B)**i
print(num)
2. [11005] 진법 변환 2
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
N, B = map(int, input().split())
digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
num = ""
while N > 0:
num += str(digits[N % B])
N //= B
print(num[::-1])
3. [2720] 세탁소 사장 동혁
미국으로 유학간 동혁이는 세탁소를 운영하고 있다. 동혁이는 최근에 아르바이트로 고등학생 리암을 채용했다. 동혁이는 리암에게 실망했다. 리암은 거스름돈을 주는 것을 자꾸 실수한다. 심지어 $0.5달러를 줘야하는 경우에 거스름돈으로 $5달러를 주는 것이다! 어쩔 수 없이 뛰어난 코딩 실력을 발휘해 리암을 도와주는 프로그램을 작성하려고 하지만, 디아블로를 하느라 코딩할 시간이 없어서 이 문제를 읽고 있는 여러분이 대신 해주어야 한다. 거스름돈의 액수가 주어지면 리암이 줘야할 쿼터(Quarter, $0.25)의 개수, 다임(Dime, $0.10)의 개수, 니켈(Nickel, $0.05)의 개수, 페니(Penny, $0.01)의 개수를 구하는 프로그램을 작성하시오. 거스름돈은 항상 $5.00 이하이고, 손님이 받는 동전의 개수를 최소로 하려고 한다. 예를 들어, $1.24를 거슬러 주어야 한다면, 손님은 4쿼터, 2다임, 0니켈, 4페니를 받게 된다.
N = int(input())
for _ in range(N):
quarter = 0
dime = 0
nickel = 0
penny = 0
change = round(float(input()) * 0.01, 2)
while change > 0:
if change >= 0.25:
change -= 0.25
change = round(change, 2)
quarter += 1
elif change >= 0.1:
change -= 0.1
change = round(change, 2)
dime += 1
elif change >= 0.05:
change -= 0.05
change = round(change, 2)
nickel += 1
elif change >= 0.01:
change -= 0.01
change = round(change, 2)
penny += 1
elif change == 0:
break
print(quarter, dime, nickel, penny)
4. [2903] 중앙 이동 알고리즘
상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다. 외계 지형은 중앙 이동 알고리즘을 이용해서 만들려고 한다. 알고리즘을 시작하면서 상근이는 정사각형을 이루는 점 4개를 고른다. 그 후에는 다음과 같은 과정을 거쳐서 지형을 만든다.
- 정사각형의 각 변의 중앙에 점을 하나 추가한다.
- 정사각형의 중심에 점을 하나 추가한다.
초기 상태에서 위와 같은 과정을 한 번 거치면 총 4개의 정사각형이 새로 생긴다. 이와 같은 과정을 상근이가 만족할 때 까지 계속한다. 아래 그림은 과정을 총 2번 거쳤을 때까지의 모습이다.

상근이는 어떤 점은 한 개 보다 많은 정사각형에 포함될 수 있다는 사실을 알았다. 메모리 소모량을 줄이기 위해서 중복하는 점을 한 번만 저장하려고 한다. 과정을 N번 거친 후 점 몇 개를 저장해야 하는지 구하는 프로그램을 작성하시오.
sequence = []
dot_sequence = []
for i in range(1, 16):
if i == 1:
sequence.append(3)
dot_sequence.append(3**2)
else:
sequence.append(sequence[-1]*2-1)
dot_sequence.append(sequence[-1]**2)
N = int(input())
print(dot_sequence[N-1])
5. [5086] 배수와 약수
4 × 3 = 12이다. 이 식을 통해 다음과 같은 사실을 알 수 있다. 3은 12의 약수이고, 12는 3의 배수이다. 4도 12의 약수이고, 12는 4의 배수이다. 두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.
- 첫 번째 숫자가 두 번째 숫자의 약수이다.
- 첫 번째 숫자가 두 번째 숫자의 배수이다.
- 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다.
while True:
N, M = map(int, input().split())
if N == 0 and M == 0:
break
elif N > M:
if N % M == 0:
print("multiple")
else:
print("neither")
else:
if M % N == 0:
print("factor")
else:
print("neither")
6. [2501] 약수 구하기
어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다. 6을 예로 들면
- 6 ÷ 1 = 6 … 0
- 6 ÷ 2 = 3 … 0
- 6 ÷ 3 = 2 … 0
- 6 ÷ 4 = 1 … 2
- 6 ÷ 5 = 1 … 1
- 6 ÷ 6 = 1 … 0
그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다.
두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.
N, K = map(int, input().split())
factor_list = []
for i in range(1, N+1):
if N % i == 0:
factor_list.append(i)
if len(factor_list) < K:
print(0)
else:
print(factor_list[K-1])
7. [9506] 약수들의 합
어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.
while True:
N = int(input())
if N == -1:
break
else:
factor_list = []
for i in range(1, N+1):
if N % i == 0:
factor_list.append(i)
if sum(factor_list[:-1]) == N:
print(N, " = ", " + ".join(str(i) for i in factor_list[:-1]), sep="")
else:
print(N, "is NOT perfect.")
'Programing 프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[백준] 11단계: 시간 복잡도 (0) | 2023.06.28 |
---|---|
[백준] 10단계: 직사각형과 삼각형 (0) | 2023.06.26 |
[백준] 5~7단계: 추가문제 (0) | 2023.06.09 |
[백준] 1~4단계: 추가문제 (0) | 2023.05.24 |
[백준] 9단계: 2차원 배열 (0) | 2023.02.16 |