[Python] 코드업 6081번 ~ 6090번

4 minute read

[Python] 코드업 6081번 ~ 6090번

코드업 파이썬 기초 100제


링크: https://codeup.kr/problemsetsol.php?psid=33

6081번


  • 문제

16진수(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)를 배운 영일이는 16진수끼리 곱하는 16진수 구구단?에 대해서 궁금해졌다.

A, B, C, D, E, F 중 하나가 입력될 때, 1부터 F까지 곱한 16진수 구구단의 내용을 출력해보자. (단, A ~ F 까지만 입력된다.)

  • 코드
n = int(input(), 16)
for i in range(1, 16):
    print('%X*%X=%X'%(n, i, (n*i)))

6082번


  • 문제

친구들과 함께 3 6 9 게임을 하던 영일이는 잦은 실수 때문에 계속해서 벌칙을 받게 되었다. 3 6 9 게임의 왕이 되기 위한 369 마스터 프로그램을 작성해 보자.

** 3 6 9 게임은? 여러 사람이 순서를 정한 후, 순서대로 수를 부르는 게임이다. 만약 3, 6, 9 가 들어간 수를 자신이 불러야 하는 상황이라면, 수를 부르는 대신 “박수(X)” 를 쳐야 한다. 33과 같이 3,6,9가 두 번 들어간 수 일때, “짝짝”과 같이 박수를 두 번 치는 형태도 있다.

  • 코드
n = int(input())

for i in range(1, n+1):
    if ((i % 10 == 3) or (i % 10 == 6) or (i % 10 == 9)):
        print("X", end=' ')
    else:
        print(i, end=' ')

6083번


  • 문제

빨강(red), 초록(green), 파랑(blue) 빛을 섞어 여러 가지 다른 색 빛을 만들어 내려고 한다.

빨강(r), 초록(g), 파랑(b) 각 빛의 가짓수가 주어질 때, 주어진 rgb 빛들을 섞어 만들 수 있는 모든 경우의 조합(r g b)과 만들 수 있는 색의 가짓 수를 계산해보자.

  • 코드
r, g, b = map(int, input().split())
c = 0
for i in range(r):
    for j in range(g):
        for k in range(b):
            print("%d %d %d"%(i,j,k))
            c += 1
print(c)

6084번


  • 문제

1초 동안 마이크로 소리강약을 체크하는 횟수를 h (헤르쯔, Hz 는 1초에 몇 번? 체크하는가를 의미한다.)

한 번 체크한 값을 저장할 때 사용하는 비트수를 b (2비트를 사용하면 0 또는 1 두 가지, 16비트를 사용하면 65536가지..)

좌우 등 소리를 저장할 트랙 개수인 채널 개수를 c (모노는 1개, 스테레오는 2개의 트랙으로 저장함을 의미한다.)

녹음할 시간(초) s가 주어질 때,

필요한 저장 용량을 계산하는 프로그램을 작성해보자.

실제로, 일반적인 CD 음질(44.1KHz, 16bit, 스테레오)로 1초 동안 저장하려면 44100 * 16 * 2 * 1 bit의 저장공간이 필요한데, 44100162*1/8/1024/1024 로 계산하면 약 0.168 MB 정도가 필요하다.

이렇게 녹음하는 방식을 PCM(Pulse Code Modulation) 방법이라고 하는데, 압축하지 않은 순수한(raw) 소리 데이터 파일은 대표적으로 *.wav 가 있다.

  • 코드
h, b, c, s = map(int, input().split())
save = (h * b * c * s) / 8 / 1024 / 1024

print("%.1f MB"%save)
  • 참고

8 bit(비트) = 1byte(바이트) # 8bit=1Byte 1024 Byte(210 byte) = 1KB(킬로 바이트) # 1024Byte=1KB 1024 KB(210 KB) = 1MB(메가 바이트) 1024 MB(210 MB) = 1GB(기가 바이트) 1024 GB(210 GB) = 1TB(테라 바이트)

6085번


  • 문제

이미지의 가로 해상도 w, 세로 해상도 h, 한 픽셀을 저장하기 위한 비트 b 가 주어질 때, 압축하지 않고 저장하기 위해 필요한 저장 용량을 계산하는 프로그램을 작성해 보자.

예를 들어 일반적인 1024 * 768 사이즈(해상도)의 각점에 대해 24비트(rgb 각각 8비트씩 3개)로 저장하려면 1024 * 768 * 24 bit의 저장공간이 필요한데, 102476824/8/1024/1024 로 계산하면 약 2.25 MB 정도가 필요하다.

실제 그런지 확인하고 싶다면, 간단한 그림 편집/수정 프로그램을 통해 확인할 수 있다.

  • 코드
w, h, b = map(int, input().split())
save = (w*h*b)/8/1024/1024

print("%.2f MB"%save)

6086번


  • 문제

1, 2, 3 … 을 순서대로 계속 더해 합을 만드는데, 그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.

즉, 1부터 n까지 정수를 하나씩 더해 합을 만드는데, 어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.

하지만, 이번에는 그 때 까지의 합을 출력해야 한다.

예를 들어, 57을 입력하면 1+2+3+…+8+9+10=55에서 그 다음 수인 11을 더해 66이 될 때, 그 값 66이 출력되어야 한다.

  • 코드
n = int(input())
s = 0
i = 0 
while True:
    s += i
    i += 1
    if s >= n:
        break
print(s)

6087번


  • 문제

1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되, 3의 배수인 경우는 출력하지 않도록 만들어보자.

예를 들면, 1 2 4 5 7 8 10 11 13 14 … 와 같이 출력하는 것이다.

  • 코드
n = int(input())

for i in range(1, n+1):
    if i % 3 == 0 :
        continue
    print(i, end=' ')

6088번


  • 문제

어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(sequences)이라고 한다.

예를 들어 1 4 7 10 13 16 19 22 25 … 은 1부터 시작해 이전에 만든 수에 3을 더해 다음 수를 만든 수열이다. 이러한 것을 수학에서는 앞뒤 수들의 차이가 같다고 하여

등차(차이가 같다의 한문 말) 수열이라고 한다. (등차수열 : arithmetic progression/sequence) 수열을 알게 된 영일이는 갑자기 궁금해졌다.

“그럼…. 123번째 나오는 수는 뭘까?”

영일이는 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.

시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때 n번째 수를 출력하는 프로그램을 만들어보자.

  • 코드
a, d, n = map(int, input().split())
s = a
for i in range(1, n):
    s += d
print(s)

6089번


  • 문제

어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(sequences)이라고 한다.

예를 들어 2 6 18 54 162 486 … 은 2부터 시작해 이전에 만든 수에 3을 곱해 다음 수를 만든 수열이다.

이러한 것을 수학에서는 앞뒤 수들의 비율이 같다고 하여 등비(비율이 같다의 한문 말) 수열이라고 한다. (등비수열 : geometric progression/sequence)

등비 수열을 알게된 영일이는 갑자기 궁금해졌다. “그럼…. 13번째 나오는 수는 뭘까?” 영일이는 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.

시작 값(a), 등비(r), 몇 번째인지를 나타내는 정수(n)가 입력될 때 n번째 수를 출력하는 프로그램을 만들어보자.

  • 코드
a, r, n = map(int, input().split())
s = a
for i in range(1, n):
    s *= r
print(s)

6090번


  • 문제

어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(sequences)이라고 한다.

예를 들어 1 -1 3 -5 11 -21 43 … 은 1부터 시작해 이전에 만든 수에 -2를 곱한 다음 1을 더해 다음 수를 만든 수열이다.

이런 이상한 수열을 알게 된 영일이는 또 궁금해졌다. “그럼…. 13번째 나오는 수는 뭘까?”

영일이는 물론 수학을 아주 잘하지만 이런 문제는 본 적이 거의 없었다… 그래서 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.

시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때, n번째 수를 출력하는 프로그램을 만들어보자.

  • 코드
a, m, d, n = map(int,input().split())
s = a
for i in range(1, n):
    s = (s * m) + d
print(s)

Leave a comment