본문 바로가기

728x90

Python

[백준알고리즘] 9613번: GCD 합 -Python [백준알고리즘] 9613번: GCD 합 -Python https://www.acmicpc.net/problem/9613 9613번: GCD 합 문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1000000을 넘지 않는다. 출력 각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다. 예제 입 www.acmicpc.net 이번에는 최대공약수를 구하기 위해 math 모듈의 gcd를 사용했다. 처음에는 유.. 더보기
[백준알고리즘] 1850번: 최대공약수 -Python [백준알고리즘] 1850번: 최대공약수 -Python https://www.acmicpc.net/problem/1850 1850번: 최대공약수 모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A가 111이고, B가 111111인 경우에는 최대공약수가 111이다. www.acmicpc.net 예제를 헷갈릴만하게 줬다. 처음에 보면 두 수의 차이만큼 1이 존재하는 것처럼 느껴진다. 하지만 뭔가 이상해서 생각해보니 두 수의 최대공약수만큼 1이 존재하는 것과 같았다. 두 수의 차이만큼 1이 존재하는 것이 아닌 것은 다음을 보면 알 수 있다. 입력으로.. 더보기
[백준알고리즘] 2609번: 최대공약수와 최소공배수 -Python [백준알고리즘] 2609번: 최대공약수와 최소공배수 -Python https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를,둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 이번 문제는 주어진 두 수에 대한 최대공약수와 최소공배수를 구하는 문제이다. 이전에도 풀었던 문제인데 코드를 비교해보니 거의 같았다. 공식이 있어서 그런 것 같다. 최대공약수를 구하는 공식은 유클리드 호제법이다. 유클리도 호제법을 이용하면 다음과 같은 공식이 나오게 된다. 두 수 A와 B가 있을 때, A에 대하여 B를 나눈 몫이 X, 나머지가 R이라 하면, "A = B * X + R"의 식이 나오게 .. 더보기
[백준알고리즘] 1158, 1168번: 요세푸스 문제, 요세푸스 문제 2 -Python [백준알고리즘] 1158, 1168번: 요세푸스 문제, 요세푸스 문제 2 -Python https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net https://www.acmicpc.net/problem/1168 1168번: 요세푸스 문제 2 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 100,000) www.acmicpc.net * 1168번은 재채점으로 현재 통과되지 않습니다. 시간내서 다시 풀어보겠습니다. (20210203) * 먼저, 요즘 C++로 풀고 있기 때문에 C++로 풀어보았고 꽤 오랜시간이.. 더보기
[백준알고리즘] 10820번: 문자열 분석 -Python [백준알고리즘] 10820번: 문자열 분석 -Python https://www.acmicpc.net/problem/10820 10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다. www.acmicpc.net 이번 문제는 문자의 타입을 구분하는 문제이다. 파이썬으로 풀었기 때문에 is~()라는 메서드들을 이용해서 간단하게 해결했다. 파이썬이 아니라 다른 언어로 해결을 하려고 한다면 아스키코드표를 이용하면 될 것이다. isupper()의 경우 문자가 65~90에 해당할 것이고, islower()의 경우에는 97~122에 해당할 것이다. 숫자.. 더보기
[백준알고리즘] 11652번: 카드 -Python [백준알고리즘] 11652번: 카드 -Python https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다. www.acmicpc.net 문제를 풀기 위해서 collections 모듈의 Counter 클래스를 생각했다. 딕셔너리 형태로 반환받은 다음에 정렬을 시키려다가 더 간단해 보이는 방법으로 풀기로 했다. 문제를 푼 방식은 간단하다. 리스트로 하기에는 너무.. 더보기
[백준알고리즘] 10825번: 국영수 -Python [백준알고리즘] 10825번: 국영수 -Python https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 이름은 알파벳 대소문자로 이루어진 문자열이고, 길이는 10자리를 넘지 않는다. www.acmicpc.net 간단한 정렬문제이다. 요즘 정렬 문제들을 푸는데 파이썬으로는 너무 간단하게 풀려서.... 몇 가지 문제를 제외하고는 안 올릴 예정이고 대신 Sorting Algorithm을 복습할 겸 공부해서 올려야겠다. 이 문제도.. 더보기
[백준알고리즘] 11052번: 카드 구매하기 -Python [백준알고리즘] 11052번: 카드 구매하기 -Python https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 반드시 N개를 구매하면서 가장 비싸게 주고 사는 경우를 구해야 한다. 입력받은 값으로부터 누적해 나가면서 i개를 살 때 가장 비싸게 주는 값을 구해나갔다. 최종적으로 N개를 구매할 때 가장 비싸게 사는 방법을 계산했다. 각 인덱스 마다 값을 구하기 위해서 다음과 같이 생각했다. 1개를 살 때: 0 + 1 2개를 살 때: 0 + 2 1 + 1 3개.. 더보기

728x90