본문 바로가기

알고리즘/함수 in python10

[백준 1676번] (factorial)팩토리얼 0의 개수 in python 문제 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500) 출력 첫째 줄에 구한 0의 개수를 출력한다. 예제 입력 1 10 예제 출력 1 2 예제 입력 2 3 예제 출력 2 0 처음에 어떤 의미의 문제인가 이해를 하지 못했다. 그러다 계산기로 10!을 쳐보고 이해를 했다. 5!=120 10!=3,628,800 즉 뒤에 있는 0의 갯수를 말하는 것이였다. 10!은 5의 배수인 5와 10이 두개이므로 0이 2개가 나온다. 15!는 5,10,15 3개이므로 0이 3개가 나온다. 그렇기에 5만 나올때마다 cnt+=1해주면 될줄 알았다.... n=int(input()) cnt=0 for i in range(0,n.. 2021. 11. 16.
stack, queue, deque in python stack, queue, deque에 대해 알아보자. stack은 선입후출! - 먼저 들어온 것이 나중에 빠져나간다. 컵 모양이라 생각하면 똑같다. 1,2,3,4가 stack이라는 리스트에 들어갔다면 꺼낼 때는 4,3,2,1순으로 나와야한다. python에서 특정한 라이브러리가 없는 것으로 알고있다. stack은 평범한 리스트로 구현이 가능하다. stack=[] stack.append(1) stack.append(2) # stack = [1,2] stack.pop() # 결과 : 2 stack.pop() # 결과 : 1 stack.append(3) stack.append(4) # stack = [3,4] stack.insert(0,5) # stack = [5,3,4] stack.pop(0) # 결과 : .. 2021. 11. 12.
[백준 3036번] (Fraction)분수 표현 in python 분수로 표현해주는 라이브러리 from fractions import Fraction Fraction(3,1) # 3/1을 분수로 표현한다. f=Fraction(12,8) # 12/8을 3/2으로 표현해준다. f=Fraction(4,1) # 4로 표현해준다. f=Fraction(12,8) print(f.numerator) print(f.denominator) # numerator는 분자를 denominator는 분모를 불러온다. # 결과로 3과 2를 차례대로 출력해준다. 2021. 11. 10.
[백준 11053번] (bisect)가장 긴 증가하는 부분 수열(LIS) in python 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 예제 입력 1 6 10 20 10 30 20 50 예제 출력 1 4 LIS! Longest Increasing Subsequence로 뜻은 가장 긴 증가 부분수열이다. 별거 없다. 다음 숫자가 자신보.. 2021. 11. 8.
from itertools import 순열, 조합, 곱집합, 중복조합 in python 순열. import permutations -> 순서가 있음 from itertools import permutations n,m=map(int,input().split()) #n=4, m=2 permu=list(permutations([i for i in range(1, n+1) ],m)) # [1,2,3,4], 2 print(permu) ''' for i in permu: for j in range(len(i)): print(i[j], end=' ') print() ''' ''' 입력 : 4 2 출력 : [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)] 입력 : 3 1 출력 : .. 2021. 11. 2.
[백준 2108번] (Counter)통계학(평균, 중앙값, 최빈값, 범위) in python 문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 출력 첫째 줄에는 산술평균을 출력한다. 소수점 이하 .. 2021. 11. 1.
int형 숫자를 0을 앞에 붙인 문자열로 변경 in python target=1 print(format(target,'02')) print('{0:03d}'.format(target)) 결과 : 01 001 개인적으로 밑에 것을 더 선호 2021. 10. 27.
문자열 내부 공백 제거 in python 문자열 처리를 하다보면 공백들이 들어간 문자열들을 볼 수 있다. 예를 들어, 1: " asdf asdf asdf asdf " 2: "asdf asdf asdf asdf" 이런 경우들이 있다. 이럴 땐, str.strip(), str.replace(), str.split()들을 써주면서 제거해주면 가볍게 해결이 된다. S=input() #' asdf asdf asdf ' print(S.split()) split()함수로 ['asdf', 'asdf', 'asdf']가 생성된다. 좌우 공백이 있는 문자열이 불편하다 싶으면, S=input() #' asdf asdf ' print(S.strip()) strip()함수를 써주면 'asdf asdf'가 나온다. 또한 아예 공백이 없는 문자열로 만들고 싶다? S=in.. 2021. 10. 26.
파이썬으로 입력받기 - input() or sys.stdin.readline() 보통 백준에서 알고리즘 공부를 하다보면 입력을 넣어줘야하는 코드를 작성해야한다. (프로그래머스에선 그런거 필요없는데....) 여튼 그래서 보통 input()을 쓰거나 a,b=map(int, input().split()) 을 써서 받은 string값을 정수인 int값으로 바꿔주었다. 그러다가 유용한게 있어서 적어놓는다. input대신 sys.stdin.readline()을 하면 시간초과를 줄여줄 수 있다. 안그래도 다른 언어에 비해 속도가 낮은 파이썬이라 시간초과가 많이 나는데 이 정보는 유용하다. import sys T=int(sys.stdin.readline())# strip은 문자열의 앞뒤에 있는 공백문자들을 제거해준다. for i in range(T): a,b=map(int, sys.stdin.re.. 2021. 10. 25.