본문 바로가기
  • 초부득3 - 어제보다 나은 내일을 위해
  • 꿈이 현실이 되는 날까지

sw사관학교 정글 2기/01 기초,재귀,완전탐색, 정렬34

[완전탐색] 백준 2309번 일곱 난쟁이 with Python3 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 문제 내 풀이 import itertools midget = [] for i in range(9): midget.append(int(input())) midget.sort() result = list(itertools.combinations(midget, 7)) for i in range(len(result)): a = list(result[i]) if sum(a) == 100: a.sort() for i.. 2021. 8. 10.
[재귀함수]★★백준 1074번 Z with Python3 https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서 www.acmicpc.net 문제 내 풀이 N, r, c = map(int, input().split()) count = 0 x = c y = r while N > 1: # 1분면 if x = 2**(N-1) and y < 2**(N-1): count += 1 * (2**(N-1)) * (2**(N-1)) x.. 2021. 8. 10.
[재귀함수]★★백준 1914번 하노이 with Python3 https://www.acmicpc.net/problem/1914 1914번: 하노이 탑 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 문제 내 풀이 def move(no: int, x: int, y: int) -> None: if no > 1: move(no-1, x, 6-x-y) print(f'{x} {y}') if no > 1: move(no-1, 6-x-y, y) n = int(input()) a = 2**n - 1 print(a) if n < 21: move(n, 1, 3) 해설 이해하지 못하고 답을 보고 구현만 했다..... 2021. 8. 10.
[재귀함수] 백준 10869번 팩토리얼 with Python3 https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 내 풀이 def factorial(n: int): if n > 0: return n * factorial(n-1) else: return 1 n = int(input()) print(factorial(n)) 해설 재귀를 쓰고 싶었으나, 제대로 이해하지 못하고 단순한 for문의 대체로만 사용했다. 정답 풀이 def factorial(n): result = 1 if n > 0 : result = n * factorial(n-1) return result n = int(input()) print(fa.. 2021. 8. 10.
[기초-구현] 백준 2628번 종이자르기 with Python3 https://www.acmicpc.net/problem/2628 2628번: 종이자르기 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1㎝마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선 www.acmicpc.net 문제 내 풀이 length = list(map(int, input().split())) cutno = int(input()) hor = int(length[0]) ver = int(length[1]) horcord = [] vercord = [] for i in range(hor): horcord.append('*') for i in range(ver): vercord.append('*') counthor .. 2021. 8. 8.
[기초-소수] ★★백준 9020번 골드바흐의 추측 with Python3 https://www.acmicpc.net/problem/9020 문제 내 풀이 import math import sys n = 10000 a = int(math.sqrt(n)) primelist = [] for i in range(2, n-1): primelist.append(i) primeN = [] for i in range(2, a): primeN.append(i) for i in range(4, a): for j in range(2, i): if i % j == 0 and i in primeN: primeN.remove(i) power = 0 for j in range(len(primeN)): power = primeN[j] for i in range(2, n): c = power*i if c .. 2021. 8. 7.
[기초-소수] ★백준 1978번 소수 찾기 with Python3 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 예제 입력 4 1 3 5 7 내 풀이 import math n = 1000 a = int(math.sqrt(n)) primelist = [] for i in range(2, n-1): primelist.append(i) primeN = [] for i in range(2, a+1): primeN.append(i) for i in range(4, a): for j in range(2.. 2021. 8. 7.
[기초-시간복잡도] ★백준 2869번 달팽이는 올라가고 싶다 with Python3 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 문제 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 내 풀이 import sys import math a, b, v = map(int, sys.stdin.readline().split()) c = a-b s = (v-a)/c print(math.ceil(s)+1) 해설 처음으로 시간복잡도를 고려한 문제. 무려 시간제한이 0.15초 . 비효율적인 for문은 바로 컷이다. 그다지 정돈 되지못했고 완전히 이해하고 풀이를 .. 2021. 8. 7.
[기초-문자열] 백준 2908번 상수 with Python3 https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 문제 상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다. 두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오. 내 풀이 a = list(input().split()) b = int(a[0][::-1]) c = int(a[1][::-1]) i.. 2021. 8. 7.