본문 바로가기

BOJ/Python

(192)
[BOJ/백준] 13297 - Quick Estimates (Python) 문제 문제링크주어진 숫자를 표현하는 데 필요한 자릿수를 구하라. 풀이숫자를 문자열로 입력받아 len()으로 그 길이를 구하면 필요한 자릿수와 같다. 코드 n=int(input())for _ in range(n): s=input() print(len(s))
[BOJ/백준] 33689 - CPDU (Python) 문제문제링크UDPC의 새 대회 이름은 C로 시작해야 한다.N개의 후보 중 새 대회 이름으로 쓸 수 있는 것은 몇 개인가? 풀이n개의 입력을 받아 그 문자열이 C로 시작하면(startswith('C')) 리스트에 1을 저장한다.이 리스트의 합을 구하면 새 대회 이름으로 쓸 수 있는 후보의 개수와 같다. 코드 n=int(input())s_list=[1 for _ in range(n) if input().startswith('C')]print(sum(s_list))
[BOJ/백준] 1837 - 암호제작 (Python) 문제문제링크두 소수 p와 q의 곱을 비밀키로 둔다. 두 소수가 각각 K보다 작으면 좋지 않은 암호이다.좋은 암호이면 첫째 줄에 GOOD을 출력하고 좋지 않은 암호이면 BAD와 둘 중 작은 소수을 공백으로 구분해 출력한다. 풀이에라토스테네스의 체를 사용한다.1부터 K-1까지 중에서 소수만 True로 남기는 리스트 is_prime을 생성한다. 이때 0과 1은 소수가 아니므로 False로 둔다.어떤수가 합성수면 반드시 √K 이하의 약수를 가지므로 range(2, int(K**0.5)+1)로 둔다.i*k (k이제 i의 배수는 False로 바꾼다.is_prime 리스트에서 index와 value를 꺼내 True일 경우만 인덱스를 primes에 넣는다.이제 primes에는 K 이하의 소수만 들어있다.P는 무조건 소..
[BOJ/백준] 3062 - 수 뒤집기 (Python) 문제문제링크각 테스트 케이스에 대해서 원래 수와 뒤집은 수를 합한 수가 좌우 대칭이 되는지 테스트하라. 풀이입력받은 수와 뒤집은 수의 합을 구하는 함수 sum_num_and_reverse()를 작성한다.이 때 str로 입력받아야 뒤집기 쉬우므로 num의 type은 str이어야 한다.num[::-1]로 reverse한 후, 원래 수와 이 수를 int형으로 바꿔 더한 후 다시 str형으로 바꿔 return하는 함수이다.이후 좌우대칭인지 판단하는 is_palindrome() 함수를 작성한다.좌우대칭이기 위해서는 원래 수와 뒤집은 수가 완전히 일치하면 된다.이제 두 수의 합이 좌우대칭인지 판단하는 symmetry() 함수를 자것ㅇ한다.sum_num_and_reverse() 함수를 불러와 합을 tot에 저장한다...
[BOJ/백준] 14568 - 2017 연세대학교 프로그래밍 경시대회 (Python) 문제문제링크n개의 사탕을 세 사람이 나누기 위한 규칙은 다음과 같다.남는 사탕은 없어야 한다.남규는 영훈이보다 2개 이상 많은 사탕을 가져야 한다.셋 중 사탕을 0개 받는 사람은 없어야 한다.택희가 받는 사탕의 수는 홀수개가 되어서는 안 된다.이 규칙을 따를 때 사탕을 세 사람에게 분배하는 서로 다른 경우의 수를 세보자. 풀이택희, 영훈이, 남규의 사탕 수를 각각 a, b, c로 둔다.택희는 2 이상의 짝수 개를 받으므로 for문의 범위를 range(2, n+1, 2)로 둔다. 이때 n을 포함하기 위해 n+1로 설정했지만 사실상 0개를 받는 사람은 없으므로 n으로 두어도 상관없다.영훈이는 0개 이상, 남규는 영훈이보다 2개 이상을 받아야 하므로 영훈이의 범위는 range(1, n-a+1)로 둔다. 이때 ..
[BOJ/백준] 6131 - 완전 제곱수 (Python) 문제문제링크A의 제곱은 B의 제곱보다 N만큼 크고 1 ≤ B ≤ A ≤ 500 , 1 ≤ N ≤ 1,000 이다.N이 주어질 때 A와 B 쌍의 개수를 구하라. 풀이브루트포스를 이용해 a와 b 순서쌍을 500이하에서 모두 찾는다.이때 b는 a보다 무조건 작거나 같으므로 범위를 range(1, a+1)로 설정한다.a*a==b*b+n일 때만 위 조건을 만족하므로 센다. 코드n=int(input())cnt=0for a in range(1, 501): for b in range(1, a+1): if a*a==b*b+n: cnt+=1print(cnt)
[BOJ/백준] 9550 - 아이들은 사탕을 좋아해 (Python) 문제문제링크아이들은 항상 한 종류의 사탕만을 먹고 싶어하고 한 종류의 사탕을 최소한 K개 이상 먹어야만 행복해한다.K가 주어지고 승택이가 현재 갖고 있는 사탕의 종류와 개수가 주어질 때, 생일파티에 올 수 있는 아이들의 최대 몇 명인가? 풀이한종류의 사탕을 K개씩 준다고 할 때, 그 종류의 사탕을 받을 수 있는 아이들의 수는 사탕 수를 K로 나눈 몫과 같다.이를 각 사탕마다 계산한 후 sum()으로 아이들의 수를 구한다. 코드t=int(input())for _ in range(t): n,k=map(int, input().split()) count_candy=list(map(int, input().split())) children=[i//k for i in count_candy] print(sum(..
[BOJ/백준] 16673 - 고려대학교에는 공식 와인이 있다 (Python) 문제문제링크와인을 사기로 마음먹은 해를 0년 차라고 정의하고, n년 차에는 Kn+P(n**2) 만큼의 와인을 산다.C년 동안 총 몇 병의 와인을 수집했는가? 풀이y= Kn+P(n**2) 의 방정식을 return하는 함수를 작성한다.각 해의 와인 수를 계산해 C년 동안의 총 합을 구하는 year_c 함수를 작성한다.위 equation 함수를 불러와 i를 x값으로 사용해 i년의 와인 수를 구한다. 코드def equation(x, K, P): return K*x+P*x*xdef year_c(C,K,P): tot=0 for i in range(1, C+1): tot+=equation(i, K, P) return totC, K, P=map(int, input().split())print(year_c(..