코딩일지 218

python 백준 알고리즘 1436번: 영화감독 숌

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 첫 666의 카운트를 1로 잡고 무식하게 1씩 더해가면서(six_n += 1) '666'이 포함될때마다 카운트를 늘린다. 입력받은 n의 값을 카운트로 하는 수를 출력하면 끝. 내 제출 n = int(input()) cnt = 0 six_n = 666 while True: if '666' in str(six_n): # 666이란 글자가 포함되어 있다면 cnt += 1 # 카운트 올리기 666(1)..

python 백준 알고리즘 1018번: 체스판 다시 칠하기

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 8*8 체스판을 만들기 위해 공간확보 필요(range(n-7), range(m-7)) 흰색으로 시작할 경우, 검은색으로 시작할 경우별로 경우의 수를 모두 구해서 최솟값(min) 출력. 구상은 했지만 코드를 짜는데 어려움을 많이 겪어 구글링을 많이 한 문제다. 꾸준히 복습해서 제대로 흡수합시다 내 제출 n, m = map(int, input().split()) # 열, 행 board = []..

python 백준 알고리즘 7568번: 덩치

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net input값으로 리스트 작성 후 이중 반복문을 통해 각 인물들마다 리스트 인원별로 키, 몸무게를 비교해서 둘 다 작다면 등수를 올리는 방식으로 구상했다. 내 제출 N = int(input()) # 사람 수 people = [] for _ in range(N): # 몸무게, 키 리스트 생성 x, y = map(int, input().split()) people.append((x,y)) ..

python 백준 알고리즘 2798번: 블랙잭

https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 파이썬에서 제공하는 순열 조합 라이브러리의 combinations 함수를 이용하여 3개의 카드 조합의 경우를 구했다. ** itertools https://docs.python.org/ko/3/library/itertools.html itertools — 효율적인 루핑을 위한 이터레이터를 만드는 함수 — Python 3.10.7 문서 itertools — 효율적인 ..

python 백준 알고리즘 11729번: 하노이 탑 이동 순서

https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net ** 참고자료 하노이의 탑 알고리즘 https://www.youtube.com/watch?v=FYCGV6F1NuY&t=378s n개의 원판이 있을때, 맨 밑의 원판을 제외한 나머지 n - 1개의 원판들을 시작기둥에서 보조기둥으로 옮긴 뒤(1단계), 맨 밑의 원판을 목표기둥으로 옮긴다(2단계). 그리고 n - 1개의 원판들을 다시 보조기둥에서 목표기둥으로 옮긴다(3단계). 내 제출 n ..

python 백준 알고리즘 2447번: 별 찍기 - 10

N의 패턴 -> ' '으로 채워진 가운데의 (N/3) x (N/3)의 정사각형을 크기 (N/3)의 패턴으로 둘러싼 형태. 결국 재귀를 돌면서 N은 최소단위는 3이 되고, 탈출경로로 N=3일때의 패턴을 만들어 리턴. ** 재귀함수 최대깊이 설정 import sys sys.setrecursionlimit(10**6) 파이썬의 재귀함수 기본 최대횟수가 1000회로 작아 대부분의 코딩테스트 문제에 적용시켜줘야 수월하다 ** '\n'.join '구분자(이 경우 줄넘김)'.join(리스트)를 이용하면 리스트의 값과 값 사이에 '구분자'에 들어온 구분자를 넣어서 하나의 문자열로 합친다. ** input 과 sys.studin.readline 둘은 기능상 큰 차이가 없으나 속도차이가 크다. 백준은 입력값을 받아서 문제..

python 백준 알고리즘 25501번: 재귀의 귀재

문제에서 팰린드롬을 구하는 코드의 힌트를 거의 다 줘서 호출 횟수 부분만 신경써주면 된다. global을 이용, cnt 변수를 전역변수로 만들어 사용. 내 제출 def recursion(s, l, r): global cnt # 함수 내에서 전역 변수로 cnt를 활용하기 위해 global로 명시해준다. cnt += 1 if l >= r: return 1 elif s[l] != s[r]: return 0 else: return recursion(s, l+1, r-1) def isPalindrome(s): return recursion(s, 0, len(s)-1) for _ in range(int(input())): cnt = 0 print(isPalindrome(input().rstrip()), cnt)

python 백준 알고리즘 10870번: 피보나치 수 5

https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 재귀함수를 이용해 피보나치 수를 구하는 로직을 구하는 간단한 문제 def fibonacci(n): if n

python 백준 알고리즘 10872번: 팩토리얼

https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net ** N = 0일때 출력이 1 기본 팩토리얼 재귀 함수는 # Factorial(N) = N*Factorial(N-1) # ... # Factorial(1) = 1 N이 1일때 리턴값 만들기 def factorial(n): if n == 1: return 1 return n * factorial(n - 1) 여기서 n == 0:으로 바꿔주면 입력이 0일시 출력 1이면서 n이 1일 경우에도 입력값 1로 정상작동한다. def factorial(n): if n == 0: return 1 return n * ..