본문 바로가기

반응형

전체 글

(253)
[python/파이썬] 백준 3036 링 [문제 출처] https://www.acmicpc.net/problem/3036 3036번: 링 출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다. www.acmicpc.net [문제 풀이 - 내 풀이] 분수를 사용하기 위해서 Fraction 모듈을 사용해서 문제를 해결했다. 정수의 경우는 4/1과 같은 분수의 형식으로 표현이 되지 않기에 따로 출력을 해주었다. #3036 from fractions import Fraction n = int(input()) ring = list(map(int, input().split())) result = [] for i in range(1, n): re..
[python/파이썬] 백준 1037 약수 [문제 출처] https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net [문제 풀이] A가 N의 진짜 약수라면 A가 1과 N이 아니여야 한다. 문제에서는 N이 무엇인지 구해야 한다. 결국 N을 구한다는 것은 주어진 진짜 약수들과 다른 공배수를 구하는 것이다. 주어진 진짜 약수들 중에서 가장 작은 값과 가장 큰 값을 찾아 곱해주면 된다. 진짜 약수의 개수가 입력으로 들어오지만 풀이과정에서는 사용하지 않는다. #1037 n = int(input())..
[python/파이썬] 백준 5086 배수와 약수 [문제 출처] https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net [소스 코드] #5086 while True: a, b = map(int,input().split()) if a==0 and b== 0: break if b%a==0: print("factor") elif a%b==0: print("multiple") else: print("neither")
[python/파이썬] 백준 4153 직각삼각형 [문체 출처] https://www.acmicpc.net/problem/4153 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net [문제 풀이] 삼각형의 세 변의 길이를 저장한 리스트 L을 오름차순으로 정렬하여 가장 긴 변의 길이를 찾아 피타고라스의 정의를 적용한다. #4153 while True: L = list(map(int,input().split())) if L[0]==0 and L[1]==0 and L[2]==0: break else: L.sort() if (L[0]**2 + L[1]**2) == L[2]**2: pri..
[python/파이썬] 백준 3009 네 번째 점 [문제 출처] https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net [문제 풀이] 축에 평행한 직사각형이 있다면, x값과 y값은 쌍을 이루게 된다. 직사각형이기에 직각을 이루기 위해서는 한 점에 대해서 x값이 같은 점 하나와, y값이 같은 점이 하나 필요하다. 이는 네 개의 점 모두에 적용되기에 쌍을 이룬다. 따라서 3개의 점이 입력되었을 때 개수가 짝수개가 아닌 값을 찾으면 네 번째 점을 찾을 수 있다. #3009 xList = [] yList = [] for i in range(3): x, y = map(int, input()..
[python/파이썬] 백준 1085 직사각형에서 탈출 [문제 출처] https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net [문제 풀이] 현재 위치인 (x, y)에서 사각형의 경계까지 가장 가까운 거리가 얼마인지 구하는 문제이다. 사각형은 (0, 0)과 (w, h)를 각각 왼쪽 아래와 오른쪽 위 꼭짓점으로 한다. x좌표는 x좌표끼리, y좌표는 y좌표끼리 비교하여 가장 거리가 짧은 경우를 택하면 된다. 0과 x의 차이, 0과 y의 차이, x와 w의 차이, y와 h의 차이 중에 가장 작은..
[python/파이썬] 백준 11478 서로 다른 부분 문자열의 개수 [문제 출처] https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net [문제 풀이] 주어진 문자열이 있을 때 해당 문자열의 부분 문자열의 개수를 구하는 문제이다. 처음 접근을 할 때는 길이가 1인 부분 문자열, 2인 부분 문자열과 같이 길이에 초점을 맞춰 문제를 해결하려고 했으나 복잡해져서 좀처럼 실마리가 보이지 않았다. 그래서 다른 코드를 참고해보니 길이가 아닌 부분 문자열의 시작부분에 초점을 맞춰야 간단하게 풀 수 있는 문제였다. 문제를 해석하고 답을 찾으려고 할 때 끝까지 잡고 푸는 것도 중요하지만 적절한 판단을 ..
[python/파이썬] 백준 1764 듣보잡 [문제 출처] https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net [소스 코드] 딕셔너리를 이용해서 풀었는데 뭔가 쉽게 풀 수 있는 다른 방법이 있지 않을까 해서 찾아보니 집합을 이용해서 푼 코드가 많았다. 코드 길이가 매우 짧았고 직관적으로 이해하기에도 좋았다. 게다가 메모리와 시간 모두 내 코드의 1/3밖에 되지 않았다. 다양한 방법을 생각해보는 연습이 필요할 것 같다. #1764 n, m = map(int, input().split()) p..

반응형