전체 글 (306)
2022-01-03 23:55:44
반응형

문자열 내림차순으로 배치하기

 

 문제 설명

 

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

 

 제한 사항

 

  • str은 길이 1 이상인 문자열입니다.

 

 입출력 예

 

s return
"Zbcdefg" "gfedcbZ"

 

 Python 코드

 

def solution(s):
    return "".join(sorted(list(s), reverse = True))

 

 

 

* join 함수 : 매개변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어 반환하는 함수


''.join(리스트)

'구분자'.join(리스트)

join 함수는 매개변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어 반환하는 함수이다.

- ''.join(리스트)
''.join(리스트)를 이용하면 매개변수로 들어온 ['a', 'b', 'c'] 이런 식의 리스트를 'abc'의 문자열로 합쳐서 반환해주는 함수이다.

- '구분자'.join(리스트)
'구분자'.join(리스트)를 이용하면 리스트의 값과 값 사이에 '구분자'에 들어온 구분자를 넣어서 하나의 문자열로 합쳐준다.
'_'.join(['a', 'b', 'c']) 라 하면 "a_b_c" 와 같은 형태로 문자열을 만들어서 반환해 준다.


''.join(리스트)는 '구분자'.join(리스트)에서 '구분자'가 그냥 공백인 것과 같다.

즉, 정리하자면 join함수의 찐 모양은 '구분자'.join(리스트) 이다.

참고 링크 : https://blockdmask.tistory.com/468

sorted(정렬할 데이터)

sorted(정렬할 데이터, reverse 파라미터) 

sorted(정렬할 데이터, key 파라미터)

sorted(정렬할 데이터, key 파라미터, reverse 파라미터)

※ 리스트의 메소드인 sort()를 사용하여도 정렬이 된다. 
이 경우에는 리스트 자체를 변경해 버린다. 
일반적으로 이것보다는 내장함수인 sorted()가 더 편리하다. 
또한 sort()는 리스트만을 위한 메소드이지만 sorted() 함수는 어떤 이터러블 객체도 받을 수 있다.

* 참고 링크 : https://blockdmask.tistory.com/466

 

* 리스트 정렬 (sort) : sort 함수는 리스트의 요소를 순서대로 정렬

a = [1, 4, 3, 2]
a.sort()
a
# result : [1, 2, 3, 4]
a = ['a', 'c', 'b']
a.sort()
a
# result : ['a', 'b', 'c']

 

* sorted ( ) 함수 : sorted(iterable) 함수는 입력값을 정렬한 후 그 결과를 리스트로 돌려주는 함수

sorted([3, 1, 2])
# result : [1, 2, 3]

sorted(['a', 'c', 'b'])
# result :  ['a', 'b', 'c']

sorted("zero")
# result :  ['e', 'o', 'r', 'z']

sorted((3, 2, 1))
# result : [1, 2, 3]

* 참고 링크 : https://wikidocs.net/32#sorted

 

 C++ 코드

 

#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
string solution(string s) {
    string answer = s;
    sort(answer.begin(),answer.end(),greater<char>());
    return answer;
}

https://wilybear.tistory.com/85

반응형
2022-01-03 22:24:23
반응형

문자열 내 p와 y의 개수

 

 문제 설명

 

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.

 

 제한 사항

 

  • 문자열 s의 길이 : 50 이하의 자연수
  • 문자열 s는 알파벳으로만 이루어져 있습니다.

 

 입출력 예

 

s answer
"pPoooyY" true
"Pyy" false

 

 Python 코드

 

def solution(s):
    return s.lower().count('p') == s.lower().count('y')
  • lower ( ) 함수를 사용하여 문자열을 모두 소문자로 바꾼 뒤
  • count ( ) 함수로 문자열 내의 p와 y의 개수를 센 것 을 비교하여 바로 True 또는 False가 나옴

 

* upper ( ) 함수 : a를 대문자 문자열로 변환

* lower ( ) 함수 : b를 소문자 문자열로 변환

 
a = "hi"
 
print("a를 대문자로:", a.upper())
 
 
 
b = "HI"
 
print("b를 소문자로:", b.lower())

* count ( ) 함수 : 문자열에서 사용되는 함수로 특정 문자, 또는 문자열이 포함되어 있는지 카운팅 해주는 함수

 
 
 
str1 = '111112345'
print(str1.count('1')) #5
print(str1.count('11')) #2

my_name = 'minhee kang'
print(my_name.count('min')) #1
print(my_name.count('e'))  #2

# 리스트에 사용가능
my_name_list = ['min', 'hee', 'kang']
print(my_name_list.count('min')) #1
print(my_name_list.count('e'))  #0

# 튜플에 사용가능
my_name_tuple = ('min', 'hee', 1)  #이렇게 int 형 섞여있어도 가능
print(my_name_list.count('min')) #1
print(my_name_list.count('e'))  #0

# 집합에 사용가능
my_name_set = {'min', 'hee', 1}
print(my_name_list.count('min')) #1
print(my_name_list.count('e'))  #0
 
 

* 참고 링크 1 : https://wikidocs.net/13

* 참고 링크 2 : https://velog.io/@himinhee/python-count-%ED%95%A8%EC%88%98

 C++ 코드

 

#include <string>
#include <iostream>
#include <algorithm>
using namespace std;

char easytolower(char in) {
  if(in <= 'Z' && in >= 'A')
    return in - ('Z' - 'z');
  return in;
}

bool solution(string s)
{
    int p = 0;
    int y = 0;
    transform(s.begin(), s.end(), s.begin(), easytolower);
    for(int i = 0; i < s.size(); i++){
        if(s[i] == 'p')
            p++;
        else if(s[i] == 'y')
            y++;
    }

    if(p == y )
        return true;
    else
        return false;
}
#include <string>
#include <iostream>
using namespace std;
bool solution(string s)
{
	int p = 0, y = 0;
	for (int i = 0; i < s.length(); i++)
	{
		if (tolower(s[i]) == 'p') p++;
		else if (tolower(s[i]) == 'y') y++;
	}
	return (p - y == 0) ? true : false;
}

 

* 참고 링크 1 : https://jjeongil.tistory.com/603

* 참고 링크 2 : https://it-and-life.tistory.com/192

반응형
2022-01-03 21:59:33
반응형

이상한 문자 만들기

 

 문제 설명

 

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

 

 제한 사항

 

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

 

 입출력 예

 

s return
"try hello world" "TrY HeLIO WoRID"

 

 Python 코드

 

def solution(s):
    new_list = []				 # 문자열을 새로 만들어야 하니 빈 리스트 생성
    words_list = s.split(" ")     # 받은 문자열을 단어별(스페이스 기준)으로 split해서 list에 넣어주기
    for word in words_list:		 # 단어 리스트에 있는 단어들 반복할 때 그 단어 길이 만큼 반복문
        new_words = ""	             # 단어가 반복할 때 맞춰서 빈 string이 채워지는거니까 여기에 맞게 빈 String 만들기
        for i in range(len(word)): # 단어 리스트에 있는 단어들 반복할 때 그 단어 길이 만큼 반복문
            if i % 2:
                new_words += word[i].lower() # 단어가 짝수면 소문자로 바꿔서 빈 stirng에 붙여주기
            else:
                new_words += word[i].upper() # 단어가 홀수면 대문자로 바꿔서 빈 stirng에 붙여주기
        new_list.append(new_words)     # 단어 하나가 반복이 끝나면 빈 list에 새로운 string 붙여주기
    return ' '.join(new_list)          # 새로 채워진 list new_words에 있는 요소들 붙여서 return (스페이스 중간에 넣어주기)
def toWeirdCase(s):
    # 함수를 완성하세요
    return ' '.join([''.join([c.upper() if i % 2 == 0 else c.lower() for i, c in enumerate(w)]) for w in s.split(' ')])


def toWeirdCase(s):
    return " ".join(map(lambda x: "".join([a.lower() if i % 2 else a.upper() for i, a in enumerate(x)]), s.split(" ")))

* 참고 링크 : https://velog.io/@joygoround/test-%EC%9D%B4%EC%83%81%ED%95%9C-%EB%AC%B8%EC%9E%90-%EB%A7%8C%EB%93%A4%EA%B8%B0-%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

* upper ( ) 함수 : a를 대문자 문자열로 변환

* lower ( ) 함수 : b를 소문자 문자열로 변환

a = "hi"
print("a를 대문자로:", a.upper())

b = "HI"
print("b를 소문자로:", b.lower())

* split ( ) 함수 : 문자열 나누기

a = "Life is too short"
a.split()
# result : ['Life', 'is', 'too', 'short']

* 참고 링크 : https://wikidocs.net/13

 

 C++ 코드

#include <string>

using namespace std;

string solution(string s) {
    int idx = 0;
    
    for(int i=0; i<s.size(); i++){
        
        if(s[i] == ' '){
            idx=0;
            continue; 
        }
        
        if(idx%2){
            if(s[i] <= 'Z') s[i]+=32;
        }
        else{
            if(s[i] >= 'a') s[i]-=32;  
        }
        idx++;
    }
    
    return s;
}

 

#include <string>

using namespace std;

string solution(string s) {
    int idx = 0;
    
    for(int i=0; i<s.size(); i++){
        
        if(s[i] == ' '){
            idx=0;
            continue; 
        }
       
        if(idx%2){
            s[i] = tolower(s[i]);
        }
        else{
            s[i] = toupper(s[i]); 
        }
        idx++;
    }
    
    return s;
}

* 참고 링크 : https://iingang.github.io/posts/Programmers-12930/

반응형
2022-01-03 21:37:34
반응형

약수의 합

 

 문제 설명

 

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

 

 제한 사항

 

  • n은 0 이상 3000이하인 정수입니다.

 

 입출력 예

 

n return
12 28
5 6

입출력 예 설명

입출력 예 #1
12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.

입출력 예 #2
5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.

 Python 코드

 

def solution(n):
    answer = 0
    for i in range(1, n+1):
        if n % i == 0:
            answer += i
    return answer

- print(solution(12) # result : 28

- print(solution(5) # result : 6

def s(num): 
	return sum([i for i in range(1, num+1) if num % i == 0])

* 참고 링크 : https://excelsior-cjh.tistory.com/38

 

 C++ 코드

 

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    
    for(int i=1; i <=n; i++){
        if(n%i == 0)
            answer +=i;
    }
    return answer;
}

* 참고 링크 : https://jjeongil.tistory.com/646

반응형
2022-01-03 21:14:08
반응형

핸드폰 번호 가리기

 

 문제 설명

 

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.

 

 제한 사항

 

  • s는 길이 4 이상, 20이하인 문자열입니다.

 

 입출력 예

 

phone_number return
"01033334444" "*******4444"
"027778888" "*****8888"

 

 Python 코드

 

def solution(phone_number):
    answer = '' 					
    phone_len = len(phone_number)	
    answer += '*' * (phone_len -4) + phone_number[-4:] 

    return answer

 

def solution(phone_number):
 
    answer = '' 			# 빈 문자열을 만든다.
 
    for i in range(len(phone_number[:-4])): # 처음부터 뒤에서 5번째꺼 까지 반복을 해주는데
 
        answer += "*" 			# 빈 문자열 answer에 * 을 추가해주고
 
    for i in phone_number[-4:]: # phone_number 리스트에서 뒤에서 4번째부터 마지막까지
 
        answer += i 			# answer 에 넣어준다.
 
    return answer

 

def solution(s):
 
    return "*"*(len(s)-4) + s[-4:]
  • len ( ) 함수로 문자열의 총 길이를 구한다.
  • 4자리마 가리면되므로 치호나할 개순느 총 개수 -4이다.
  • python에서는 문자 * 복사할 개수의 연산이 가능하다.
  • index slicing으로 뒷 4자리를 구한다

 

* 참고 링크 1 : https://velog.io/@cosmos/Programmers%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%95%B8%EB%93%9C%ED%8F%B0-%EB%B2%88%ED%98%B8-%EA%B0%80%EB%A6%AC%EA%B8%B0-python

* 참고 링크 2 : https://velog.io/@como/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4%ED%95%B8%EB%93%9C%ED%8F%B0-%EB%B2%88%ED%98%B8-%EA%B0%80%EB%A6%AC%EA%B8%B0python

 

* len() 함수 : 매개변수로 들어온 문자열의 길이를 반환

- 내부에 있는 문자의 갯수 및 공백을 포함한 카운팅을 하여 반환해주는 함수

- 문자열의 길이를 구할 때 용이

strlen = "HelloWorld"
print(len(strlen))

# 결과값 10

 

* Slicing(슬라이싱) : 연속적인 객체들에 범위를 지정한 후 선택해서 객체들을 가져오는 방법

- 기본 형태

a[start : end : step]
  • start : 슬라이싱을 시작할 시작 위치
  • end : 슬라이싱을 끝낼 위치로 end는 포함되지 않음
  • step : stride(보폭)라고도 불리며, 몇 개씩 끊어서 가져올지와 방향을 정하는 옵션

- 인덱스 값들의 위치

 
a = ['a', 'b', 'c', 'd', 'e']
 
 
 
# Index References
 
# -------------------------------
 
# | a | b | c | d | e |
 
# -------------------------------
 
# | 0 | 1 | 2 | 3 | 4 | // 양수의 경우
 
# -------------------------------
 
# | -5 | -4 | -3 | -2 | -1 | // 음수의 경우
 
# -------------------------------

 

- 특정 시작위치부터 끝까지 가져오기

  • a[ start : ]
 
a = ['a', 'b', 'c', 'd', 'e']
 
 
 
a[ 1 : ]
 
# result : ['b', 'c', 'd', 'e']
 
 
 
a[ -3 : ]
 
# result : ['c', 'd', 'e']

 

- 시작점부터 특정 위치까지 가져오기

  • a[ : end ]
 
a = ['a', 'b', 'c', 'd', 'e']
 
a[ : 2 ]
 
 
 
# result : ['a', 'b']

 

- 특정 위치부터 특정 위치까지 모두 가져오기

  • a[ start : end ]
 
a = ['a', 'b', 'c', 'd', 'e']
 
 
 
a[ 2 : 4 ]
 
# result : ['c', 'd']
 
 
 
 
 
a[ -4 : -2 ]
 
# result : ['b', 'c']

* 참고 링크 : https://twpower.github.io/119-python-list-slicing-examples

 

 

 C++ 코드

 

#include <string>
#include <vector>

using namespace std;

string solution(string phone_number) {
    string answer = "";
    
    int size = phone_number.size();
    
    for(int i=0; i<size-4; i++){
        answer += '*';
    }
    
    for(int i=size-4; i < size; i++){
        answer += phone_number.at(i);
    }
    
    return answer;
}

* 참고 링크 : https://jjeongil.tistory.com/612

반응형
2022-01-02 23:37:02
반응형

6081. 16진수 구구단 출력하기

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 까지만 입력된다.)

예시
...
  print('%X'%n, '*%X'%i, '=%X'%(n*i), sep='')
...

참고
print('%X'%n)    #n에 저장되어있는 값을 16진수(hexadecimal) 형태로 출력
작은 따옴표 2개를 사용해서 print(..., sep='') 으로 출력하면, 공백없이 모두 붙여 출력된다.
작은 따옴표 2개 '' 또는 큰 따옴표 2개 "" 는 아무 문자도 없는 빈문자열(empty string)을 의미한다.

a = input()

for i in range(1, 16):
  print( '%s*%s=%s' %(a, hex(i)[2:].upper(), hex(int(a, 16) *i )[2:].upper()))

 

6082. 3 6 9 게임의 왕이 되자


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

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

참고 
...
for i in range(1, n+1) :
  if i%10==3 :
    print("X", end=' ')    #출력 후 공백문자(빈칸, ' ')로 끝냄
...

a = int(input())

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

 

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

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

**모니터, 스마트폰과 같은 디스플레이에서 각 픽셀의 색을 만들어내기 위해서 r, g, b 색을 조합할 수 있다.
**픽셀(pixel)은 그림(picture)을 구성하는 셀(cell)에서 이름이 만들어졌다.
 

r, g, b = input().split()

r = int(r)
g = int(g)
b = int(b)

for i in range(0, r):
  for j in range(0, g):
    for k in range(0, b):
      print(i, j, k)

print(r*g*b)

 

6084. 소리가 컴퓨터에 저장될 때에는 디지털 데이터화 되어 저장된다.

마이크를 통해 1초에 적게는 수십 번, 많게는 수만 번 소리의 강약을 체크하고,
한 번씩 체크할 때 마다 그 값을 정수값으로 바꾸어 저장하는 방식으로 소리를 파일로 저장할 수 있다.

값을 저장할 때에는 비트를 사용하는 정도에 따라 세세한 녹음 정도를 결정할 수 있고,
좌우(스테레오) 채널로 저장하면 2배… 5.1채널이면 6배의 저장공간이 필요하고,
녹음 시간이 길면 그 만큼 더 많은 저장공간이 필요하다.

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

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

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

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

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

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

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

**
      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(테라 바이트)

h, b, c, s = input().split()

h = int(h)
b = int(b)
c = int(c)
s = int(s)

print(round(h*b*c*s/8/1024/1024, 1), "MB")

 

6085. 이미지가 컴퓨터에 저장될 때에도 디지털 데이터화 되어 저장된다.

가장 기본적인 방법으로는 그림을 구성하는 한 점(pixel, 픽셀)의 색상을
빨강(r), 초록(g), 파랑(b)의 3가지의 빛의 세기 값으로 따로 변환하여 저장하는 것인데,

예를 들어 r, g, b 각 색에 대해서 8비트(0~255, 256가지 가능)씩을 사용한다고 하면,

한 점의 색상은 3가지 r, g, b의 8비트+8비트+8비트로 총 24비트로 표현해서
총 2^24 가지의 서로 다른 빛의 색깔을 사용할 수 있는 것이다.

그렇게 저장하는 점을 모아 하나의 큰 이미지를 저장할 수 있게 되는데,
1024 * 768 사이즈에 각 점에 대해 24비트로 저장하면 그 이미지를 저장하기 위한
저장 용량을 계산할 수 있다.

이렇게 이미지의 원래(raw) 데이터를 압축하지 않고 그대로 저장하는 대표적인 이미지 파일이
*.bmp 파일이며, 비트로 그림을 구성한다고 하여 비트맵 방식 또는 래스터 방식이라고 한다.

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

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

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

**
      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(테라 바이트)

a, b, c = map(int, input().split())

totalbit = a * b * c
totalbyte = totalbit / 8
totalkb = totalbyte / 1024
totalmb = totalkb / 1024

print("%0.2f MB" % totalmb)
반응형