백준 2739번 구구단

[파이썬/Python] 백준 2739번 구구단

 

[파이썬/Python] 백준 2739번 구구단

문제N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다. 입력첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다. 출력출력형

parkyongrok.tistory.com

문제

N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.

 

입력

첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다.

 

출력

출력형식과 같게 N*1부터 N*9까지 출력한다.


기존 풀이는 다음과 같다.

N = int(input())

for i in range(1,10):
    print(f"{N} * {i} = {N*i}")

 

위 문제를 다음과 같이 함수화 하였다

# 백준 2739번 구구단
def show_multiple_table(num):
    for i in range(1,10):
        print(f"{num} * {i} = {num*i}")
        
N = int(input())
show_multiple_table(N)

백준 10950번 A+B - 3

[파이썬/Python] 백준 10950번 A+B - 3

 

[파이썬/Python] 백준 10950번 A+B - 3

문제두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력첫째 줄에 테스트 케이스의 개수 T가 주어진다.각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주

parkyongrok.tistory.com

 

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

출력

각 테스트 케이스마다 A+B를 출력한다.

 

기존 풀이는 다음과 같다

T = int(input())

test_case = []

for i in range(T):
    test_case.append(list(map(int,input().split())))

for x in range(T):
    print(test_case[x][0]+test_case[x][1])

 

위의 문제를 다음과 같이 함수화 하였다.

함수 내에서 한 줄씩 프린트하고 끝낼 수도 있지만,

함수화하는 의미를 부여하기 위해 결과값들을 list 형태로 return해 주는 방식으로 코드를 작성해 보았다.

# 백준 10950번 A+B - 3
def AplusB3():
    test_case = []
    result_list = []
    
    count = int(input())
    
    for i in range(count):
        test_case.append(list(map(int,input().split())))
    for x in range(count):
        result_list.append(test_case[x][0]+test_case[x][1])
    
    return result_list

print(AplusB3())

 


 

백준 8393번 합

[파이썬/Python] 백준 8393번 합

 

[파이썬/Python] 백준 8393번 합

문제n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. 입력첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다. 출력1부터 n까지 합을 출력한다.풀이팩토리얼 계열의 문제는 재귀함수나 fo

parkyongrok.tistory.com

 

문제

n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.

 

출력

1부터 n까지 합을 출력한다.


기존 풀이는 다음과 같다.

n = int(input())

total = 0 

for i in range(1,n+1):
    total += i

print(total)

 

위의 문제를 다음과 같이 함수화 하였다.

재귀 함수를 사용하여 작성해 보았다.

# 백준 8393번 합
def addtil1(num):
    if num == 1:
        return 1
    else:
        return num + addtil1(num-1)

n = int(input())
print(addtil1(n))

 

재귀 함수를 사용하다 보니 재귀와 for loop의 성능 차이에 대해 궁금해져서 확인해 보기 위해 코드를 작성해 보았다.

import time

def addtil1_resursion(num):
    if num == 1:
        return 1
    else:
        return num + addtil1_resursion(num-1)

def addtil1_for(num):
    total = 0
    for i in range(num+1):
        total += i
    return total

n = int(input())

start = time.time()
print(addtil1_resursion(n))
end = time.time()
print(f"resursion : {end-start}")

start = time.time()
print(addtil1_for(n))
end = time.time()
print(f"for-loop : {end-start}")

 

결과를 확인하기 위해 10,000이상의 큰 수를 넣어보니 Recursion Error 가 발생하였다.

 

RecursionError: maximum recursion depth exceeded in comparison

 

python에서는 recursion limit을 기본적으로 1,000으로 둔다는 것을 배웠다.

결과를 확인하기 위해 900 으로 비교해 보았다.

결과값은 동일하였으며 속도 측면에서는 역시 재귀함수보다 for loop 이 빠름을 알 수 있었다.


 

백준 25304번 영수증

[파이썬/Python] 백준 25304번 영수증

 

[파이썬/Python] 백준 25304번 영수증

문제준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산

parkyongrok.tistory.com

 

문제

준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다.

영수증에 적힌,

  • 구매한 각 물건의 가격과 개수
  • 구매한 물건들의 총 금액

을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.

 

입력

첫째 줄에는 영수증에 적힌 총 금액 X가 주어진다.

둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.

이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.

 

출력

구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다.

일치하지 않는다면 No를 출력한다.


기존 풀이는 다음과 같다.

X = int(input()) # total price
N = int(input()) # total number of types of objects
product_list = []
total_price = 0

for i in range(N): # total number 만큼 단가와 수량 입력받기
    product_list.append(list(map(int,input().split())))

for j in range(N): # 물건값 총 합계 계산
    total_price += product_list[j][0] * product_list[j][1]

if X == total_price: # 합계 비교 
    print('Yes')
else:
    print('No')

 

위의 풀이를 다음과 같이 함수화 하였다.

# 백준 25304번 영수증
def checking_receipt(total_price, total_type):
    product_list = []
    add_price = 0
    
    for i in range(total_type):
        product_list.append(list(map(int,input().split())))
    
    for j in range(total_type):
        add_price += product_list[j][0] * product_list[j][1]
    
    if total_price == add_price:
        return True
    else:
        return False
    
X = int(input())
N = int(input())
print(checking_receipt(X, N))

 


백준 25314번 코딩은 체육과목 입니다

[파이썬/Python] 백준 25314번 코딩은 체육과목 입니다

 

[파이썬/Python] 백준 25314번 코딩은 체육과목 입니다

문제오늘은 혜아의 면접 날이다. 면접 준비를 열심히 해서 앞선 질문들을 잘 대답한 혜아는 이제 마지막으로 칠판에 직접 코딩하는 문제를 받았다. 혜아가 받은 문제는 두 수를 더하는 문제였다

parkyongrok.tistory.com

문제

오늘은 혜아의 면접 날이다. 면접 준비를 열심히 해서 앞선 질문들을 잘 대답한 혜아는 이제 마지막으로 칠판에 직접 코딩하는 문제를 받았다. 혜아가 받은 문제는 두 수를 더하는 문제였다. C++ 책을 열심히 읽었던 혜아는 간단히 두 수를 더하는 코드를 칠판에 적었다. 코드를 본 면접관은 다음 질문을 했다. “만약, 입출력이 바이트 크기의 정수라면 프로그램을 어떻게 구현해야 할까요?”

혜아는 책에 있는 정수 자료형과 관련된 내용을 기억해 냈다. 책에는 long int 4바이트 정수까지 저장할 수 있는 정수 자료형이고 long long int 8바이트 정수까지 저장할 수 있는 정수 자료형이라고 적혀 있었다. 혜아는 이런 생각이 들었다. “int 앞에 long을 하나씩 더 붙일 때마다 4바이트씩 저장할 수 있는 공간이 늘어나는 걸까? 분명 long long long int 12바이트, long long long long int 16바이트까지 저장할 수 있는 정수 자료형일 거야!” 그렇게 혜아는 당황하는 면접관의 얼굴을 뒤로한 채 칠판에 정수 자료형을 써 내려가기 시작했다.

혜아가 𝑁바이트 정수까지 저장할 수 있다고 생각해서 칠판에 쓴 정수 자료형의 이름은 무엇일까?

 

입력

첫 번째 줄에는 문제의 정수 𝑁이 주어진다. (4≤𝑁≤1000; 𝑁 4의 배수)

 

혜아가 𝑁바이트 정수까지 저장할 수 있다고 생각하는 정수 자료형의 이름을 출력하여라.


기존 풀이는 다음과 같습니다

N = int(input())
result_string = []

number_long = N // 4

for i in range(number_long):
    result_string.append("long")

result_string.append('int')

print(f'{" ".join(result_string)}')

위의 풀이를 다음과 같이 함수화 하였습니다

# 백준 25314번 코딩은 체육과목 입니다
def decide_datatype(byte):
    result_string = []
    number_long = N // 4
    for i in range(number_long):
        result_string.append("long")
    result_string.append('int')
    
    return " ".join(result_string)
    
N = int(input())
print(decide_datatype(N))

백준 15552번 빠른 A+B

[파이썬/Python] 백준 15552번 빠른 A+B

 

[파이썬/Python] 백준 15552번 빠른 A+B

풀이> 기존에 자주 사용하던 input() 대신 sys.stdin.readline() 사용한다import sysT = int(input())test_case = []for i in range(T): test_case.append(list(map(int,sys.stdin.readline().split())))for x in range(T): print(test_case[x][0]+test_case

parkyongrok.tistory.com

https://www.acmicpc.net/problem/15552


기존 풀이는 다음과 같습니다.

import sys

T = int(input())

test_case = []

for i in range(T):
    test_case.append(list(map(int,sys.stdin.readline().split())))

for x in range(T):
    print(test_case[x][0]+test_case[x][1])

 

위의 풀이를 다음과 같이 함수화 하였습니다

# 백준 15552번 빠른 A+B
import sys

def fastAplusB():
    test_case = []
    result_case = []
    
    count = int(input())
    for i in range(count):
        test_case.append(list(map(int,sys.stdin.readline().split())))
    for j in range(count):
        result_case.append(test_case[j][0]+test_case[j][1])
        
    return result_case

print(fastAplusB())

 


 

백준 11021번 A+B - 7

[파이썬/Python] 백준 11021번 A+B - 7

 

[파이썬/Python] 백준 11021번 A+B - 7

풀이기존 [파이썬/Python] 백준 10950번 A+B - 3 문제에서 출력 부분에서 f-format을 이용해 정리해준다.T = int(input())test_case = []for i in range(T): test_case.append(list(map(int,input().split())))for x in range(T): print(f"Case

parkyongrok.tistory.com

https://www.acmicpc.net/problem/11021


기존 풀이는 다음과 같습니다

T = int(input())

test_case = []

for i in range(T):
    test_case.append(list(map(int,input().split())))

for x in range(T):
    print(f"Case #{x+1}: {test_case[x][0]+test_case[x][1]}")

 

위의 풀이를 다음과 같이 함수화 하였습니다

# 백준 11021번 A+B - 7
def AplusB7():
    T = int(input())
    test_case = []
    
    for i in range(T):
        test_case.append(list(map(int,input().split())))
    
    for x in range(T):
        print(f"Case #{x+1}: {test_case[x][0]+test_case[x][1]}")

AplusB7()

 


 

백준 11022번 A+B - 8

 

[파이썬/Python] 백준 11022번 A+B - 8

 

[파이썬/Python] 백준 11022번 A+B - 8

풀이기존 두 문제에서 출력하는 부분만 문제에서 요구하는 방식으로 꾸며주면 된다.[파이썬/Python] 백준 10950번 A+B - 3 [파이썬/Python] 백준 10950번 A+B - 3문제두 정수 A와 B를 입력받은 다음, A+B를 출

parkyongrok.tistory.com

https://www.acmicpc.net/problem/11022 기


기존 풀이는 다음과 같습니다

T = int(input())

test_case = []

for i in range(T):
    test_case.append(list(map(int,input().split())))

for x in range(T):
    print(f"Case #{x+1}: {test_case[x][0]} + {test_case[x][1]} = {test_case[x][0]+test_case[x][1]}")

 

위의 풀이를 다음과 같이 함수화 하였습니다

# 백준 11022번 A+B - 8
def AplusB8():
    T = int(input())
    test_case = []
    
    for i in range(T):
        test_case.append(list(map(int,input().split())))
    
    for x in range(T):
        print(f"Case #{x+1}: {test_case[x][0]} + {test_case[x][1]} = {test_case[x][0]+test_case[x][1]}")

AplusB8()

 

백준 2438번 별 찍기 - 1

 

[파이썬/Python] 백준 2438번 별 찍기 - 1

 

[파이썬/Python] 백준 2438번 별 찍기 - 1

풀이N = int(input())for i in range(1,N+1): print("*"*i)

parkyongrok.tistory.com

https://www.acmicpc.net/problem/2438


기존 풀이는 다음과 같습니다

N = int(input())

for i in range(1,N+1):
    print("*"*i)

 

위의 풀이를 다음과 같이 함수화 하였습니다.

# 백준 2438번 별 찍기 - 1
def print_stars1(num):
    for i in range(1,num+1):
        print("*"*i)

N = int(input())
print_stars1(N)

 


 

백준 2439번 별 찍기 - 2

 

[파이썬/Python] 백준 2439번 별 찍기 - 2

 

[파이썬/Python] 백준 2439번 별 찍기 - 2

풀이기존 문제에서 공백문자(" ", 스페이스)를 추가해주면 된다.[파이썬/Python] 백준 2438번 별 찍기 - 1 [파이썬/Python] 백준 2438번 별 찍기 - 1풀이N = int(input())for i in range(1,N+1): print("*"*i)parkyongrok.tisto

parkyongrok.tistory.com

https://www.acmicpc.net/problem/2439


기존 풀이는 다음과 같습니다

N = int(input())

for i in range(1,N+1):
    print(" "*(N-i)+"*"*i)

위의 풀이를 다음과 같이 함수화 하였습니다

# 백준 2439번 별 찍기 - 2
def print_stars2(num):
    for i in range(1,num+1):
        print(" "*(N-i)+"*"*i)

N = int(input())
print_stars2(N)

 


 

백준 10952번 A+B - 5

 

[파이썬/Python] 백준 10952번 A+B - 5

 

[파이썬/Python] 백준 10952번 A+B - 5

풀이test_case = []while True: temp_arr=[] a, b = map(int,input().split()) if a==0 and b==0: break else: temp_arr.append(a) temp_arr.append(b) test_case.append(temp_arr)for i in range(len(test_case)): print(test_case[i][0] + test_case[i][1])

parkyongrok.tistory.com

https://www.acmicpc.net/problem/10952


기존 풀이는 다음과 같습니다

test_case = []

while True:
    temp_arr=[]
    a, b = map(int,input().split())
    if a==0 and b==0:
        break
    else:
        temp_arr.append(a)
        temp_arr.append(b)
        test_case.append(temp_arr)

for i in range(len(test_case)):
    print(test_case[i][0] + test_case[i][1])

 

위의 풀이를 다음과 같이 함수화 하였습니다

# 백준 10952번 A+B - 5
def AplusB5():
    test_case = []
    while True:
        temp_arr=[]
        a, b = map(int,input().split())
        if a==0 and b==0:
            break
        else:
            temp_arr.append(a)
            temp_arr.append(b)
            test_case.append(temp_arr)

    for i in range(len(test_case)):
        print(test_case[i][0] + test_case[i][1])

AplusB5()

 

백준 10951번 A+B - 4

 

[파이썬/Python] 백준 10951번 A+B - 4

 

[파이썬/Python] 백준 10951번 A+B - 4

풀이> EOF 처리에 대해 알아야 한다> try: & except: 사용법에 대한 이해가 필요하다.test_case = []while True: temp_arr=[] try: a, b = map(int,input().split()) temp_arr.append(a) temp_arr.append(b) test_case.append(temp_arr) except: bre

parkyongrok.tistory.com

https://www.acmicpc.net/problem/10951


기존 풀이는 다음과 같습니다

test_case = []

while True:
    temp_arr=[]
    try:
        a, b = map(int,input().split())
        temp_arr.append(a)
        temp_arr.append(b)
        test_case.append(temp_arr)
    except:
        break

for i in range(len(test_case)):
    print(test_case[i][0] + test_case[i][1])

 

위의 풀이를 다음과 같이 함수화 하였습니다

# 백준 10951번 A+B - 4
def AplusB4():
    test_case = []

    while True:
        temp_arr=[]
        try:
            a, b = map(int,input().split())
            temp_arr.append(a)
            temp_arr.append(b)
            test_case.append(temp_arr)
        except:
            break

    for i in range(len(test_case)):
        print(test_case[i][0] + test_case[i][1])
    
AplusB4()

https://www.acmicpc.net/problem/10951


풀이

> EOF 처리에 대해 알아야 한다

> try: & except: 사용법에 대한 이해가 필요하다.

test_case = []

while True:
    temp_arr=[]
    try:
        a, b = map(int,input().split())
        temp_arr.append(a)
        temp_arr.append(b)
        test_case.append(temp_arr)
    except:
        break

for i in range(len(test_case)):
    print(test_case[i][0] + test_case[i][1])

 

https://www.acmicpc.net/problem/10952
https://www.acmicpc.net/problem/10952


풀이
test_case = []

while True:
    temp_arr=[]
    a, b = map(int,input().split())
    if a==0 and b==0:
        break
    else:
        temp_arr.append(a)
        temp_arr.append(b)
        test_case.append(temp_arr)

for i in range(len(test_case)):
    print(test_case[i][0] + test_case[i][1])

 

https://www.acmicpc.net/problem/2439


풀이

기존 문제에서 공백문자(" ", 스페이스)를 추가해주면 된다.

[파이썬/Python] 백준 2438번 별 찍기 - 1

 

[파이썬/Python] 백준 2438번 별 찍기 - 1

풀이N = int(input())for i in range(1,N+1): print("*"*i)

parkyongrok.tistory.com

N = int(input())

for i in range(1,N+1):
    print(" "*(N-i)+"*"*i)

https://www.acmicpc.net/problem/2438


풀이
N = int(input())

for i in range(1,N+1):
    print("*"*i)

 

https://www.acmicpc.net/problem/11022


풀이

기존 두 문제에서 출력하는 부분만 문제에서 요구하는 방식으로 꾸며주면 된다.

[파이썬/Python] 백준 10950번 A+B - 3

 

[파이썬/Python] 백준 10950번 A+B - 3

문제두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력첫째 줄에 테스트 케이스의 개수 T가 주어진다.각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주

parkyongrok.tistory.com

[파이썬/Python] 백준 11021번 A+B - 7

 

[파이썬/Python] 백준 11021번 A+B - 7

풀이기존 [파이썬/Python] 백준 10950번 A+B - 3 문제에서 출력 부분에서 f-format을 이용해 정리해준다.T = int(input())test_case = []for i in range(T): test_case.append(list(map(int,input().split())))for x in range(T): print(f"Case

parkyongrok.tistory.com

T = int(input())

test_case = []

for i in range(T):
    test_case.append(list(map(int,input().split())))

for x in range(T):
    print(f"Case #{x+1}: {test_case[x][0]} + {test_case[x][1]} = {test_case[x][0]+test_case[x][1]}")

https://www.acmicpc.net/problem/11021


풀이

기존 [파이썬/Python] 백준 10950번 A+B - 3 문제에서 출력 부분에서 f-format을 이용해 정리해준다.

T = int(input())

test_case = []

for i in range(T):
    test_case.append(list(map(int,input().split())))

for x in range(T):
    print(f"Case #{x+1}: {test_case[x][0]+test_case[x][1]}")

 

 

https://www.acmicpc.net/problem/15552


풀이

> 기존에 자주 사용하던 input() 대신 sys.stdin.readline() 사용한다

import sys

T = int(input())

test_case = []

for i in range(T):
    test_case.append(list(map(int,sys.stdin.readline().split())))

for x in range(T):
    print(test_case[x][0]+test_case[x][1])

 

문제

오늘은 혜아의 면접 날이다. 면접 준비를 열심히 해서 앞선 질문들을 잘 대답한 혜아는 이제 마지막으로 칠판에 직접 코딩하는 문제를 받았다. 혜아가 받은 문제는 두 수를 더하는 문제였다. C++ 책을 열심히 읽었던 혜아는 간단히 두 수를 더하는 코드를 칠판에 적었다. 코드를 본 면접관은 다음 질문을 했다. “만약, 입출력이 바이트 크기의 정수라면 프로그램을 어떻게 구현해야 할까요?”

혜아는 책에 있는 정수 자료형과 관련된 내용을 기억해 냈다. 책에는 long int 4바이트 정수까지 저장할 수 있는 정수 자료형이고 long long int 8바이트 정수까지 저장할 수 있는 정수 자료형이라고 적혀 있었다. 혜아는 이런 생각이 들었다. “int 앞에 long을 하나씩 더 붙일 때마다 4바이트씩 저장할 수 있는 공간이 늘어나는 걸까? 분명 long long long int 12바이트, long long long long int 16바이트까지 저장할 수 있는 정수 자료형일 거야!” 그렇게 혜아는 당황하는 면접관의 얼굴을 뒤로한 채 칠판에 정수 자료형을 써 내려가기 시작했다.

혜아가 𝑁바이트 정수까지 저장할 수 있다고 생각해서 칠판에 쓴 정수 자료형의 이름은 무엇일까?

 

입력

첫 번째 줄에는 문제의 정수 𝑁이 주어진다. (4≤𝑁≤1000; 𝑁 4의 배수)

 

혜아가 𝑁바이트 정수까지 저장할 수 있다고 생각하는 정수 자료형의 이름을 출력하여라.


 

풀이
N = int(input())
result_string = []

number_long = N // 4

for i in range(number_long):
    result_string.append("long")

result_string.append('int')

print(f'{" ".join(result_string)}')

 

문제

준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다.

영수증에 적힌,

  • 구매한 각 물건의 가격과 개수
  • 구매한 물건들의 총 금액

을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.

 

입력

첫째 줄에는 영수증에 적힌 총 금액 X가 주어진다.

둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.

이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.

 

출력

구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다.

일치하지 않는다면 No를 출력한다.


풀이
X = int(input()) # total price
N = int(input()) # total number of types of objects
product_list = []
total_price = 0

for i in range(N): # total number 만큼 단가와 수량 입력받기
    product_list.append(list(map(int,input().split())))

for j in range(N): # 물건값 총 합계 계산
    total_price += product_list[j][0] * product_list[j][1]

if X == total_price: # 합계 비교 
    print('Yes')
else:
    print('No')

 

+ Recent posts