본문 바로가기

전체 글

(227)
3036번: 링 / silver 4 / 최대공약수 https://www.acmicpc.net/problem/3036 3036번: 링 출력은 총 N-1줄을 해야 한다. 첫 번째 링을 제외한 각각의 링에 대해서, 첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태 A/B로 출력한다. www.acmicpc.net ''' 3036번: 링 / silver 4 / 최대공약수 ''' import math # 1. 입력 받기 n = int(input()) ring = list(map(int, input().split())) # 2. 최대공약수 구한 후, 출력하기 for i in range(1, len(ring)): g = math.gcd(ring[0], ring[i]) print("{}/{}".format(ring[0] // g, ring[i] /..
11729번: 하노이 탑 이동 순서 / silver 1 / 재귀 https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net ''' 11729번: 하노이 탑 이동 순서 / silver 1 / 재귀 ''' def hanoi(n, start, end): if n == 1: print(start, end) else: mid = 6 - start - end hanoi(n - 1, start, mid) print(start, end) hanoi(n - 1, mid, end) n = int(input()) print(..
6603번: 로또 / silver 2 / 조합 https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net ''' 6603번: 로또 / silver 2 / 조합 ''' import sys import itertools input = sys.stdin.readline while True: lotto = list(map(int, input().split())) if lotto[0] == 0: break case = lotto[1:len(lotto)] case.sort() S = list(iter..
10610번: 30 / silver 4 / 정렬, 수학 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 첫 시도 - 메모리 초과 ''' 10610번: 30 / silver 4 / ''' import itertools # 1. n 입력 받기 n = input() # 2. 각 숫자 arr 리스트에 넣고, 내림차순 정렬하기 arr = [] for v in n: arr.append(v) arr.sort(reverse=True) # 3. 30 배수 찾기 # 3-1. 0이 없으면 -1 if arr.pop() !..
2217번: 로프 / silver 4 / 그리디, 정렬 https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net ''' 2217번: 로프 / silver 4 / 그리디, 정렬 ''' import sys input = sys.stdin.readline # 1. 입력 받기 n = int(input()) rope = [] for _ in range(n): rope.append(int(input())) # 2. 로프 리스트 오름차순 하기 rope.sort(reverse=True) # 3. 최대 중량 구하기..
1158번: 요세푸스 문제 / silver 4 / 큐 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net - 첫 코드 짠 결과 (pypy 로 정답 / python 시간 초과) ''' 1158번: 요세푸스 문제 / silver 4 / 브루트포스 ''' # 1. n, k 입력 받기 n, k = map(int, input().split()) # 2. 1~n까지 리스트 / visited 리스트 만들기 arr = [i for i in range(1, n + 1)] cnt = 0 max_index = n - 1 search_index = k - 1 jump = k # 3. 요세푸스 순열 구하기 prin..
1065번: 한수 / silver 4 / 브루트포스 https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net ''' 1065번: 한수 / silver 4 / 브루트포스 ''' # 1. 입력 받기 x = int(input()) # 2. 1000까지 한수 double_digit = [i for i in range(1, 100)] three_digit = [111,123,135,147,159,210,222,234,246,258,321,333,345,357,369,432,420,444,456,468,543,531,..
1439번: 뒤집기 / silver 5 / 그리디 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net ''' 1439번: 뒤집기 / silver 5 / 그리디 ''' # 1. 입력 받기 s = input() # 2. 연속된 1, 0 카운트 하기 cnt = [0, 0] sequence = int(s[0]) for i in range(1, len(s)): tmp = int(s[i]) if tmp == sequence: continue else: cnt[sequence] += 1 sequence = t..